求助,80分
查看原帖
求助,80分
613598
mmy129楼主2022/8/16 16:05
#include<bits/stdc++.h>
using namespace std;
int n;
struct pos{
	int x,y;
}a,b;
queue<pos> q;
int mp[1005][1005],x2,y2,x3,y3;
int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1}; 
bool vis[1005][1005];
int tot[1005][1005];
int main(){
	cin>>n;
	string s;
	for(int i=1;i<=n;i++){
		cin>>s;
		for(int j=0;j<3;j++){
				mp[i][j]=s[j]-'0';
		} 
	}
	cin>>x2>>y2>>x3>>y3;
	a.x=x2,a.y=y2;
	q.push(a);
	vis[x2][y2]=1;
	while(!q.empty()){
		a=q.front();
		q.pop();
		cout<<a.x<<" "<<a.y<<endl;
		if(a.x==x3&&a.y==y3){
			cout<<tot[a.x][a.y];
			return 0;
		}
		for(int i=0;i<4;i++){
			int px=dx[i]+a.x;
			int py=dy[i]+a.y;
			if(px>=1&&py>=1&&py<=n&&px<=n&&vis[px][py]==0&&mp[px][py]!=1){
				tot[px][py]=tot[a.x][a.y]+1;
				vis[px][py]=1;
				b.x=px,b.y=py;
				q.push(b);
			}
		}
	}
	return 0;
}
2022/8/16 16:05
加载中...