大佬求助,这段BFS代码哪里错了?
#include <cstdio>
#include <queue>
using namespace std;
struct node
{
int x;
int y;
};
queue<node> q;
char mp[1005][1005];
int n,sx,sy,ex,ey;
int dis[4][2]={{0,1},{0,-1},{1,0},{-1,0}},vis[1005][1005];
void bfs(int x,int y)
{
while(q.size())
{
node t=q.front();
q.pop();
if(t.x==ex&&t.y==ey)
printf("%d\n",vis[ex][ey]);
for(int i=0;i<4;i++)
{
int fx=t.x+dis[i][0];
int fy=t.y+dis[i][1];
if(fx>=1&&fx<=n&&fy>=1&&fy<=n&&!vis[fx][fy]&&mp[fx][fy]=='0')
{
vis[fx][fy]=vis[t.x][t.y]++;
q.push({fx,fy});
}
}
}
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
scanf("%c",&mp[i][j]);
getchar();
}
scanf("%d%d%d%d",&sx,&sy,&ex,&ey);
q.push({sx,sy});
bfs(sx,sy);
return 0;
}