2026年柯桥B班秋季第一次月测T3题解
2026-09-29 08:15:08
发布于:浙江
0阅读
0回复
0点赞
T3:
#include<bits/stdc++.h>
using namespace std;
int n,m,k,a[1009][1009],d[1009][1009];
int dx[4]={-1,1,0,0};
int dy[4]={0,0,-1,1};
queue<pair<int,int> >q;
int main(){
memset(d,-1,sizeof(d));
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
if((i==1||i==n||j==1||j==m)&&a[i][j]==0){
d[i][j]=1;
q.push(make_pair(i,j));
}
}
}
while(!q.empty()){
int x=q.front().first;
int y=q.front().second;
q.pop();
for(int dir=0;dir<4;dir++){
int nx=x+dx[dir];
int ny=y+dy[dir];
if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&a[nx][ny]==0&&d[nx][ny]==-1){
d[nx][ny]=d[x][y]+1;
q.push({nx,ny});
}
}
}
while(k--){
int x,y;
cin>>x>>y;
cout<<d[x][y]<<'\n';
}
return 0;
}
这里空空如也




有帮助,赞一个