求助!!
查看原帖
求助!!
536120
xxxzh28楼主2021/11/7 19:39
#include<bits/stdc++.h>
using namespace std;
int n,u,l,o,p;
string s;
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
int a[1010][2];
int flag[1010][1010];
int res[1010][1010];
int bfs(int x1,int y1,int x2,int y2){
	int head=0,tail=1;
	a[tail][0]=x1;
	a[tail][1]=y1;
	flag[x1][y1]=1;
	while(head<tail){
		head++;
		for(int i=0;i<4;i++){
		int xx=a[tail][0]+dx[i];
		int yy=a[tail][1]+dy[i];
		if(flag[xx][yy]==0&&xx>=1&&xx<=n&&yy>=1&&yy<=n){
			tail++;
			a[tail][0]=xx;
			a[tail][1]=yy;
			flag[xx][yy]=1;
			res[xx][yy]=res[a[head][0]][a[head][1]]+1;
			if(xx==x2&&yy==y2)
			return res[x2][y2];
			}
		}
	}
}
int main(){
	cin>>n;
	int r=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			r++;
			cin>>s[r];
			if(s[r]-'0'==1)
			flag[r/n][r%n]=1;
		}
	}
	cin>>u>>l>>o>>p;
	cout<<bfs(u,l,o,p);
	return 0;
}
2021/11/7 19:39
加载中...