全红求条
查看原帖
全红求条
1271316
违规用户名K&xs3Z^楼主2024/8/20 17:26
#include<bits/stdc++.h>
using namespace std;
queue<int> x;
queue<int> y;
int vis[510][510];
int n,m,a,b,xx,yy;
int fx[6]={0,0,1,0,-1},fy[6]={0,1,0,-1,0};
void bfs(){
	while(!x.empty()){
		for(int i=1;i<=4;i++){
			int tx=x.front()+fx[i];
			int ty=y.front()+fy[i];
			if(tx>1&&tx<510&&ty>1&&ty<510&&!vis[tx][ty]){
				x.push(tx),y.push(ty);
				vis[tx][ty]=vis[x.front()][y.front()]+1;
			} 
		}
		x.pop(),y.pop();
	}
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n>>m>>a>>b;
	for(int i=1;i<=a;i++){
		x=queue<int>();
		y=queue<int>();
		cin>>xx>>yy;
		x.push(xx);
		y.push(yy);
		bfs();
	}
	for(int i=1;i<=b;i++){
		cin>>xx>>yy;
		cout<<vis[xx][yy]<<endl;
	}
	return 0;
}

2024/8/20 17:26
加载中...