玄关P1746
  • 板块灌水区
  • 楼主yuxinjiang
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/10/14 21:25
  • 上次更新2024/10/14 23:23:05
查看原帖
玄关P1746
1279173
yuxinjiang楼主2024/10/14 21:25
#include<queue>  
#include<iostream>
using namespace std;
char a[1005][1005];
int k[1005][1005];
int n;
int x1,y1,x2,y2;
struct node{
	int x,y;
};
queue<node>f;
int dx[4]={-1,0,0,1};
int dy[4]={0,-1,1,0};
void bfs(){
	while(f.empty()==0){
		node t=f.front();
		f.pop();
		a[t.x][t.y]='1';
		for(int i=0;i<4;i++){
			if(a[t.x+dx[i]][t.y+dy[i]]=='0'){
				k[t.x+dx[i]][t.y+dy[i]]=k[t.x][t.y]+1;
				f.push((node){t.x+dx[i],t.y+dy[i]});
			}
		}
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cin>>a[i][j];
	cin>>x1>>y1>>x2>>y2;
	f.push((node){x1,y1});
	bfs();
	cout<<k[x2][y2];
}
2024/10/14 21:25
加载中...