来咯
```cpp
#include<bits/stdc++.h>
using namespace std;
char a[1100][1100];
int m,n;
int sx,sy,ex,ey;
int fx[5]={0,0,1,0,-1};
int fy[5]={0,1,0,-1,0};
int q[1000300][4];
int main()
{
int h=1,t=1;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
}
}
cin>>sx>>sy>>ex>>ey;
a[sx][sy]='1';
q[1][1]=sx;
q[1][2]=sy;
q[1][3]=0;
int tx,ty;
while(h<=t){
for(int i=1;i<=4;i++){
tx=q[h][1]+fx[i];
ty=q[h][2]+fy[i];
if(a[tx][ty]=='0'){
a[tx][ty]='1';
t++;
q[t][1]=tx;
q[t][2]=ty;
q[t][3]=q[h][3]+1;
if(tx==ex&&ty==ey){
cout<<q[t][3]<<endl;
return 0;
}
}
}
h++;
}
}
```
by Whitecrane @ 2024-08-20 09:12:57
@[zhizhenzqs](/user/1355715)
把格子标记为 `'1'` 应该在判断那个格子能走之后就立马标记,否则可能导致一个格子重复走很多次。
by LikablePie79015 @ 2024-08-20 09:15:05
已a xie xie @[LikablePie79015](/user/733515)
by zhizhenzqs @ 2024-08-20 11:01:22