求助仅第一个测试点过了,其余全是WA以下是代码:``` #include<bits/stdc++.h> using namespace std; int n,m,a,b,gs[510][510]={},gl[510][510]={},aaaa[510],bbbb[510]; struct q{ int x,y,step; }; queue g; int dx[4]={1,-1,0,0},dy[4]={0,0,-1,1},fw[510][510]={}; void BFS(){ while(!g.empty()){ int x=g.front().x,y=g.front().y,step=g.front().step; g.pop(); gs[x][y]=step; int nx,ny; for(int i=0;i<=3;i++){ nx=x+dx[i]; ny=y+dy[i]; if(nx<=n&&nx>0&&ny<=m&&ny>0&&fw[nx][ny]==0&&gs[nx][ny]>step+1){ g.push({nx,ny,step+1}); fw[nx][ny]=1; } } } } int main(){ cin>>n>>m>>a>>b; int aa,bb; for(int i=1;i<=a;i++){ cin>>aa>>bb; gl[aa][bb]=1; } for(int i=1;i<=b;i++){ cin>>aa>>bb; aaaa[i]=aa; bbbb[i]=bb; } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ gs[i][j]=999999999; if(gl[i][j]==1){ fw[i][j]=1; g.push({i,j,0}); } } } BFS(); for(int i=1;i<=b;i++){ cout<<gs[aaaa[i]][bbbb[i]]<<endl; } }