#include<bits/stdc++.h>
using namespace std;
int f[400][400],v[400][400];
struct ma{//你要记录位置还要记录步数要用结构体
int x,y,step;
}ms[400][400];
int dx[8]={-2,-1,1,2,2,1,-1,-2};
int dy[8]={1,2,2,1,-1,-2,-2,-1};
queue<ma> r;//申请队列
int main(){
int n,m,x,y;
cin>>n>>m>>x>>y;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
f[i][j]=1;
}
}
//bfs
ma start;
start.x=x;
start.y=y;
start.step=0;
r.push(start);//
v[start.x][start.y]=1;//起点入队
while(!r.empty()){
int x=r.front().x,y=r.front().y;//队首元素用front表示
// if(x==n&&y==m){
// break;
// }
for(int k=0;k<8;k++){
int tx,ty;
tx=x+dx[k];
ty=y+dy[k];
if(f[tx][ty]==1&&v[tx][ty]==0){
//入队
ma temp;
temp.x=tx;
temp.y=ty;
temp.step=r.front().step+1;
ms[tx][ty].step=temp.step;
r.push(temp);
v[tx][ty]=1;
}
}
r.pop();
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(v[i][j]==0){
cout<<"-1 ";
continue;
}
printf("%-d ",ms[i][j].step);
}
cout<<endl;
}
return 0;
}
11-21
204
06-07