先锋队
#include <bits/stdc++.h>
using namespace std;
int f[505][505];
int n, m, a, b;
int xx[4] = {-1, 1, 0, 0};
int yy[4] = {0, 0, -1, 1};
struct node
{
int x, y, cnt;
};
queue<node> q;
int main() {
cin >> n >> m >> a >> b;
for(int i=1; i<=a; i++){
int x, y;
cin >> x >> y;
f[x][y] = 0;
q.push({x, y, 0});
}
while(q.size()){
node t = q.front();
q.pop();
for(int i=0; i<4; i++){
int tx = t.x + xx[i];
int ty = t.y + yy[i];
if(tx>=1&&tx<=n && ty>=1&&ty<=m && t.cnt+1 < f[tx][ty]){
f[tx][ty] = t.cnt+1;
}
}
}
for(int i=1; i<=b; i++){
int x, y;
cin >> x >> y;
cout << f[x][y] << endl;
}
return 0;
}