谁能帮帮我?
#include<bits/stdc++.h>
using namespace std;
int m,n,a,b,x,y,x3,y3,dis[10001][10001];
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
struct node{
int x1,y1;
};
void bfs(int x,int y){
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(i!=x||j!=y)dis[i][j]=1e9;
else dis[i][j]=0;
}
queue<node> q;
q.push({x,y});
while(q.size()){
int x2=q.front().x1,y2=q.front().y1;
q.pop();
for(int i=0;i<4;i++){
int nx=x2+dx[i],ny=y2+dx[i];
if(nx<1||nx>n||ny<1||ny>m)continue;
if(dis[x2][y2]+1<dis[nx][ny]){
dis[nx][ny]=dis[x2][y2]+1;
q.push({nx,ny});
}
}
}
}
}
int main(){
cin>>m>>n>>a>>b;
for(int i=1;i<=a;i++)cin>>x>>y;
bfs(x,y);
for(int i=1;i<=b;i++){
cin>>x3>>y3;
cout<<dis[x3][y3];
}
return 0;
}