求救!莫名全错……!
查看原帖
求救!莫名全错……!
533436
最靓的哥楼主2022/4/20 20:47

求救!莫名全错……!

#include<iostream>
#include<queue>
using namespace std;
int n,x1,y1,x2,y2,s[1005][1005];
bool a[1005][1005];
char str[1005];
queue<int> qx,qy;
int d[4][2]={{-1,0},{1,0},{0,1},{0,-1}};
void bfs(){
	qx.push(x1);
	qy.push(x2);
	s[x1][x2]=0;
	a[x1][x2]=1;
	while(!qx.empty()&&!qy.empty()){
		for(int i=0;i<4;i++){
			int nx=qx.front()+d[i][0],ny=qy.front()+d[i][1];
			if(nx>0&&nx<=n&&ny>0&&ny<=n&&a[nx][ny]==0){
				a[nx][ny]=1;
				s[nx][ny]=s[qx.front()][qy.front()]+1;
				if(nx==x2&&ny==y2){
					cout<<s[nx][ny];
					return;
				}
				qx.push(nx);
				qy.push(ny);
			}
		}
		qx.pop();
		qy.pop();
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>(str+1);
		for(int j=1;j<=n;j++){
			if(str[j]=='1')a[i][j]=1;
		}
	}
	cin>>x1>>y1>>x2>>y2; 
	bfs();
	return 0;
} 
2022/4/20 20:47
加载中...