为什么50分
查看原帖
为什么50分
544113
不慕放糖楼主2021/8/20 20:45
#include<bits/stdc++.h>
using namespace std;
int n,vis[1005][1005],mp[1005][1005];
int x1,y3,x2,y2;
struct node{
	int x,y,step;
};
queue<node>q;
int xx[4]={1,0,-1,0};
int yy[4]={0,1,0,1};
int main(){
	cin>>n;
	char b;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>b;
			if(b=='1')mp[i][j]=1;
			else  mp[i][j]=0;
		
		}
	}
	cin>>x1>>y3>>x2>>y2;
	q.push(node{x1,y3,0});
	vis[x1][y3]=true;	
	mp[x2][y2]=1e9;
	while(!q.empty()){
		for(int i=0;i<4;i++){
			int dx=xx[i]+q.front().x;
			int dy=yy[i]+q.front().y;	
			if(dx==x2&&dy==y2){
//				   cout<<dx<<" "<<dy<<" "<<q.front().step+1<<" "<<mp[x2][y2]<<endl;
					mp[x2][y2]=min(mp[x2][y2],q.front().step+1);
			}
			if(dx>=1&&dx<=n&&dy>=1&&dy<=n&&!vis[dx][dy]&&mp[dx][dy]==0){
				q.push(node{dx,dy,q.front().step+1});
				vis[dx][dy]=1;
			}
		} 
		q.pop();
	}
	cout<<mp[x2][y2];
	return 0;
} 
2021/8/20 20:45
加载中...