代码:
#include<bits/stdc++.h>
using namespace std;
const int N=105;
struct node
{
int x,y,dis,num;
}g[N][N];
int n,sx,sy,ex,ey;
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
void bfs(int x,int y)
{
queue<node> q;
g[x][y].dis=0;
q.push(g[x][y]);
while(!q.empty())
{
node cur=q.front();
q.pop();
for(int i=0;i<4;i++)
{
int tx=cur.x+dx[i],ty=cur.y+dy[i];
if(tx>=1&&tx<=n&&ty>=1&&ty<=n&&g[tx][ty].num==0&&g[tx][ty].dis==-1)
{
g[tx][ty].dis=cur.dis+1;
if(tx==ex&&ty==ey)
{
cout<<g[tx][ty].dis;
exit(0);
}
q.push(g[tx][ty]);
}
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
cin>>g[i][j].num;
g[i][j].x=i;
g[i][j].y=j;
g[i][j].dis=-1;
}
cin>>sx>>sy>>ex>>ey;
bfs(sx,sy);
return 0;
}