#include<bits/stdc++.h>
using namespace std;
int n,m,a[410][410];
bool use[410][410];
int wx[8]={-2,-1,1,2,2,1,-1,-2};
int wy[8]={1,2,2,1,-1,-2,-2,-1};
struct node{
int x,y,step;
};
void bfs(int sx,int sy){
queue<node> q;
node fq={sx,sy,0};
q.push(fq);
use[sx][sy]=0;
a[sx][sy]=0;
while(q.size()){
node cq=q.front();
q.pop();
for(int i=0;i<8;i++){
node nq={
cq.x+wx[i],
cq.y+wy[i],
cq.step+1
};
if(use[nq.x][nq.y]==1&&nq.x>0&&nq.y>0&&nq.x<=n&&nq.y<=m){
use[nq.x][nq.y]=0;
q.push(nq);
a[nq.x][nq.y]=nq.step;
}
}
}
}
int main(){
int sx,sy;
cin>>n>>m>>sx>>sy;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
use[i][j]=1;
}
bfs(sx,sy);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(use[i][j]==1)
a[i][j]=-1;
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
洛谷 - P1443 马的遍历
最新推荐文章于 2024-07-19 15:45:46 发布