不知道怎么回事全WA了
求助!!!
#include<bits/stdc++.h>
#define N 301
using namespace std;
struct bag{
int x,y,step;
};
struct node {
int x,y;
}f[27][2];
queue < bag > q;
int tot[30];
int n,m,fx,fy,ex,ey;
int mp[N][N];
bool bk[N][N];
int nx[5]={0,1,0,-1,0};
int ny[5]={0,0,1,0,-1};
int read()
{
int x=0,f=1;
char c=getchar();
while(c>'9'||c<'0')
{
if(c=='-')
f=-1;
c=getchar();
}
while(c>='0'&&c<='9')
{
x=(x<<1)+(x<<3)+(c^48);
c=getchar();
}
return x*f;
}
void bfs()
{
bag t1,t2,t3;
t1.x=fx,t1.y=fy,t1.step=0;
q.push(t1);
while(!q.empty())
{
t2=q.front();
q.pop();
if(t2.x==ex && t2.y==ey)
{
cout<<t2.step;
return;
}
for(int i=1;i<=4;i++)
{
t3.x=t2.x+nx[i];
t3.y=t2.y+ny[i];
t3.step=t2.step+1;
if(!bk[t3.x][t3.y] && !mp[t3.x][t3.y] && t3.x>0 && t3.y>0 && t3.x<=n && t3.y<=m)
{
bk[t3.x][t3.y]=true;
q.push(t3);
}
if(!bk[t3.x][t3.y] && mp[t3.x][t3.y]==2)
{
int tx,ty;
for(int j=1;j<=26;j++)
for(int k=0;k<=1;k++)
if(f[j][k].x==t3.x && f[j][k].y==t3.y && !bk[f[j][abs(k-1)].x][f[j][abs(k-1)].y])
{
t3.x=f[j][abs(k-1)].x,t3.y=f[j][abs(k-1)].y;
break;
}
bk[t3.x][t3.y]=true;
q.push(t3);
}
}
}
return;
}
int main()
{
char c;
n=read(),m=read();
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
cin>>c;
if(c=='#')
mp[i][j]=1;
if(c>='A'&&c<='Z')
f[c-'A'+1][tot[c-'A'+1]].x=i,f[c-'A'+1][tot[c-'A'+1]++].y=j,mp[i][j]=2;
if(c=='=')
ex=i,ey=j;
if(c=='@')
fx=i,fy=j;
}
bk[fx][fy]=true;
bfs();
return 0;
}
```cpp