找着板子写的,全挂了,我不李姐
#include<iostream>
#include<queue>
using namespace std;
int dx[]={-1,0,0,1};
int dy[]={0,-1,1,0};
struct Pos
{
int x,y;
};
queue <Pos> q;
bool vis [1010][1010];
int a[1010][1010];
int dis[1010][1010];
int n;
int x,y,xx,yy,xxx,yyy;
int bfs(int ax,int ay)
{
q.push((Pos{ax,ay}));
vis[ax][ay]=true;
while(!q.empty())
{
x=q.front().x;
y=q.front().y;
q.pop();
if(x==xxx&&y==yyy) return dis[x][y];
for(int i=0;i<4;i++)
{
int tx=x+dx[i];
int ty=y+dy[i];
if(tx>n||ty>n||tx<=0||ty<=0) continue ;
if(a[tx][ty]==1||vis[tx][ty]==true) continue ;
vis[tx][ty]=true;
dis[tx][ty]=dis[x][y]+1;
q.push((Pos){tx,ty});
}
}
return -1;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
cin>>xx>>yy>>xxx>>yyy;
cout<<bfs(xx,yy);
return 0;
}