题解 100% AC
2025-08-02 14:13:08
发布于:江苏
7阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
struct node{
int x,y,step;
};
int n,m,a[1010][1010],dir[8][2]={-2,1,-2,-1,2,1,2,-1,-1,2,-1,-2,1,2,1,-2};
bool vis[1010][1010];
queue<node>q;
void bfs(int x,int y){
memset(a,-1,sizeof(a));
vis[x][y]=1;
q.push({x,y,0});
a[x][y]=0;
while(q.size()){
node t=q.front();
q.pop();
for(int i=0;i<8;i++){
int nx=t.x+dir[i][0];
int ny=t.y+dir[i][1];
if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&!vis[nx][ny]){
q.push({nx,ny,t.step+1});
vis[nx][ny]=1;
a[nx][ny]=t.step+1;
}
}
}
}
int main(){
int x,y;cin>>n>>m>>x>>y;
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>a[i][j];
bfs(x,y);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
这里空空如也
有帮助,赞一个