P8119 血色先锋队输出5百多万什么原因

#include<bits/stdc++.h>
using namespace std;
struct xx{
int x,y,step;
};
struct xy{
int anx,any;
}b[100005];
int n,m,an,bn,ax,ay,nx,ny,ans[505][505]={0};
int dx[4]={1,0,0,-1},dy[4]={0,1,-1,0};
queue q;
bool a[505][505]={0};
void bfs(){
while(q.size()>0){
xx now=q.front();
q.pop();
ans[now.x][now.y]=now.step;
for(int i=0;i<4;i++){
nx=now.x+dx[i];
ny=now.y+dy[i];
if(nx>=1&&ny>=1&&nx<n&&ny<m&&a[nx][ny]==0&&ans[nx][ny]==0){
a[nx][ny]=1;
q.push(xx{nx,ny,now.step+1});
}
}
}
}
int main(){
cin>>n>>m>>an>>bn;
for(int i=1;i<=an;i++){
scanf(“%d%d”,&ax,&ay);
q.push(xx{ax,ay,1});
a[ax][ay]=1;
}
for(int i=1;i<=bn;i++){
scanf(“%d%d”,&ax,&ay);
b[i].anx=ax;
b[i].any=ay;
}
bfs();
for(int i=1;i<=bn;i++) printf(“%d\n”,&ans[b[i].anx][b[i].any]-1);
return 0;
}

6 个赞