不吸氧能A#5,#7,T#3
吸了氧后A#4#5#7
#include<bits/stdc++.h>
#define re register
using namespace std;
int n,m,a,b;
int sx[100010],sy[100010];
int ex[100010],ey[100010];
int mp[510][510];
int dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};
int sum;
int front,rear;
bool f[510][510],v[510][510];
struct node{
int t;
int x,y;
}q[250010];
int main(){
scanf("%d%d%d%d",&n,&m,&a,&b);
for(re int i=1;i<=a;i++){
scanf("%d%d",&sx[i],&sy[i]);
q[rear].x=sx[i];
q[rear].y=sy[i];
q[rear].t=0;
rear++;
}
for(re int i=1;i<=b;i++){
scanf("%d%d",&ex[i],&ey[i]);
f[ex[i]][ey[i]]=true;
}
while(front<rear){
int t=q[front].t;
int x=q[front].x;
int y=q[front].y;
v[x][y]=true;
mp[x][y]=t;
if(f[x][y]){
sum++;
f[x][y]=false;
}
if(sum==b){
break;
}
for(re int i=0;i<4;i++){
if(!v[x+dx[i]][y+dy[i]]){
v[x+dx[i]][y+dy[i]]=true;
q[rear].t=t+1;
q[rear].x=x+dx[i];
q[rear].y=y+dy[i];
rear++;
}
}
front++;
}
for(re int i=1;i<=b;i++){
printf("%d\n",mp[ex[i]][ey[i]]);
}
return 0;
}