MLE,求改
查看原帖
MLE,求改
1547297
Lsy_er13楼主2025/6/22 16:35
#include<bits/stdc++.h>
using namespace std;
int n,xx,yy,x2,y2;
char a[1009][1009];
bool xy(int sum){
	if(sum>0&&sum<=n)return 1;
	return 0;
}void bfs(){
	queue<int>x;
	queue<int>y;
	queue<int>ans;
	x.push(xx);
	y.push(yy);
	ans.push(0);
	while(!x.empty()){
		if(x.front()==x2&&y.front()==y2){
			cout<<ans.front();
			return;
		}
		//		cout<<x.front()<<" "<<y.front();
		if(xy(x.front()+1)&&a[x.front()+1][y.front()]=='0'){
			x.push(x.front()+1);
			y.push(y.front());
			ans.push(ans.front()+1);
		}if(xy(x.front()-1)&&a[x.front()-1][y.front()]=='0'){
			x.push(x.front()-1);
			y.push(y.front());
			ans.push(ans.front()+1);
		}if(xy(y.front()+1)&&a[x.front()][y.front()+1]=='0'){
			x.push(x.front());
			y.push(y.front()+1);
			ans.push(ans.front()+1);
		}if(xy(y.front()-1)&&a[x.front()][y.front()-1]=='0'){
			x.push(x.front());
			y.push(y.front()-1);
			ans.push(ans.front()+1);
		}x.pop();
		y.pop();
		ans.pop();
	}return ;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
		}
	}cin>>xx>>yy>>x2>>y2;
	bfs();
	return 0;
}
2025/6/22 16:35
加载中...