#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 250010
using namespace std;
int n,m,a,b;
int xi[MAXN],yi[MAXN];
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
int map[510][510],vis[510][510];
struct nond{
int x,y,pos;
};
queue<nond>que;
int main(){
scanf("%d%d%d%d",&n,&m,&a,&b);
for(int i=1;i<=a;i++){
nond v;
scanf("%d%d",&v.x,&v.y);v.pos=0;
que.push(v);vis[v.x][v.y]=1;
}
for(int i=1;i<=b;i++)
scanf("%d%d",&xi[i],&yi[i]);
while(!que.empty()){
nond now=que.front();
que.pop();
for(int i=0;i<4;i++){
int cx=now.x+dx[i];
int cy=now.y+dy[i];
if(!vis[cx][cy]&&cx>=1&&cx<=n&&cy>=1&&cy<=m){
vis[cx][cy]=1;
map[cx][cy]=now.pos+1;
nond tmp;tmp.x=cx;tmp.y=cy;tmp.pos=now.pos+1;
que.push(tmp);
}
}
}
for(int i=1;i<=b;i++)
cout<<map[xi[i]][yi[i]]<<endl;
}
让人春分日 哈工科教100383.血色先锋队
最新推荐文章于 2024-07-18 17:40:16 发布