# P1332血色先锋队(BFS)求助 #
查看原帖
# P1332血色先锋队(BFS)求助 #
327580
rand_everything楼主2021/6/14 20:20
#include <bits/stdc++.h>
using namespace std;
struct point{
	int x,y;	
};
int main(){
	int qwq,qwe,n,m,a,b,k[510][510],bosx[100000],bosy[100000];
	cin >> n >> m >> a >> b;
	queue<point> q;
	memset(k,-1,sizeof k);
	for(int i = 0;i < a;i++){
		cin >> qwq  >> qwe;
		k[qwq][qwe] = 0;
		q.push({qwq,qwe}); 
	}
	
	for(int i = 0;i < b;i++){
		cin >> bosx[i] >> bosy[i];
	}
	
	int dx[4] = {1,-1,0,0};
	int dy[4] = {0,0,1,-1};

	while(q.size()){
		int tx = q.front().x,ty = q.front().y;
		q.pop();
		for(int i = 0;i < 4;i++){
			int fx = tx + dx[i],fy = ty + dy[i];
			if(fx >= 1 && fx <= n && fy >= 1 && fy <= m && k[fx][fy] == -1){
				k[fx][fy] = k[tx][ty] + 1;
				q.push({fx,fy});
			}
			
		}
	}
	for(int i = 1;i <= b;i++){
			cout << k[bosx[i]][bosy[i]] << endl;
	} 
} 
2021/6/14 20:20
加载中...