记录
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
struct gr{
int x,y,t;
gr(int x,int y,int t):x(x),y(y),t(t){};
};
queue<gr> q;
int n,m,a,b,gx,gy,xl,yl;
int time[505][505];//每次标记时间
int dx[]={0,-1,0,1};
int dy[]={-1,0,1,0};
int main(){
cin>>n>>m>>a>>b;
memset(time,-1,sizeof(time));
for(int i=1;i<=a;i++){
cin>>gx>>gy;
q.push(gr(gx,gy,0));
time[gx][gy]=0;
}
while(!q.empty()){//bfs标记感染时间
int xx=q.front().x;
int yy=q.front().y;
int tt=q.front().t;
q.pop();
for(int i=0;i<4;i++){
int xxx=xx+dx[i];
int yyy=yy+dy[i];
int ttt=tt+1;
if(xxx>=1 && xxx<=n && yyy>=1 && yyy<=m && time[xxx][yyy]==-1){
time[xxx][yyy]=ttt;
q.push(gr(xxx,yyy,ttt));
}
}
}
for(int i=1;i<=b;i++){
cin>>xl>>yl;
cout<<time[xl][yl]<<endl;
}
return 0;
}