首发!!!!!
2026-07-22 09:41:07
发布于:广东
12阅读
0回复
0点赞
太简单了
(其实肝了很久。。。)
#include <bits/stdc++.h>
using namespace std;
int n,sx,sy,tx,ty,vis[1100][1100];
char a[1100][1100]={};
int d[1100][1100];
void bfs(int x,int y){
d[x][y]=0;
queue <int>xq,yq;
xq.push(x);yq.push(y);
while(!xq.empty()&&!yq.empty()){
if(xq.front()==tx&&yq.front()==ty)return;
int xn=xq.front(),yn=yq.front();
if(!vis[xn][yn]&&a[xn][yn]!='1'){
vis[xn][yn]=1;
if(xn+1<=n){xq.push(xn+1);yq.push(yn);d[xn+1][yn]=d[xn][yn]+1;}
if(xn-1>=1){xq.push(xn-1);yq.push(yn);d[xn-1][yn]=d[xn][yn]+1;}
if(yn+1<=n){xq.push(xn);yq.push(yn+1);d[xn][yn+1]=d[xn][yn]+1;}
if(yn-1>=1){xq.push(xn);yq.push(yn-1);d[xn][yn-1]=d[xn][yn]+1;}
}
xq.pop();yq.pop();
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){cin>>a[i][j];}
cin>>sx>>sy>>tx>>ty;
bfs(sx,sy);
cout<<d[tx][ty]<<endl;
return 0;
}
这里空空如也








有帮助,赞一个