有没有大佬看看我这个代码哪里错了(广搜迷宫)
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
int m,n,a[101][101],vis[101][101];
struct point
{
int x,y,stemp;
}e[100001];
queue<point> q;
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int main()
{
scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
point start;
start.x=1;
start.y=1;
start.stemp=0;
vis[1][1]=1;
q.push(start);
while(!q.empty())
{
int x=q.front().x,y=q.front().y;
if(x==m&&y==n)
{
printf("%d",q.front().stemp);
break;
}
for(int k=0;k<=3;k++)
{
int tx,ty;
tx=x+dx[k];
ty=y+dy[k];
if(a[tx][ty]==0&&vis[tx][ty]==0)
{
point temp;
temp.x=tx;
temp.y=ty;
temp.stemp=q.front().stemp+1;
q.push(temp);
vis[tx][ty]=1;
}
}
q.pop();
}
}