#include <bits/stdc++.h>
#define ll long long
using namespace std;
struct point{
ll x,y,step;
};
queue<point> niko;
ll n,m,x,y,asd[1001][1001],dir[8][2]={{1,2},{1,-2},{-1,2},{-1,-2},{2,-1},{2,1},{-2,1},{-2,-1}};
bool vis[1001][1001];
void bfs(ll nowx,ll nowy){
point now={nowx,nowy,0};
vis[nowx][nowy]=1;
niko.push(now);
while(!niko.empty()){
now=niko.front();
for(ll i=0;i<8;i++){
ll xx=now.x+dir[i][0],yy=now.y+dir[i][1],sstep=now.step+1;
if(xx<1||yy<1||xx>n||yy>m||vis[xx][yy]==1)continue;
else{
vis[xx][yy]=1;
niko.push((point){xx,yy,sstep});
asd[xx][yy]=sstep;
}
}
niko.pop();
}
}
int main(){
cin>>n>>m>>x>>y;
bfs(x,y);
for(ll i=1;i<=n;i++){
for(ll j=1;j<=m;j++){
if(asd[i][j]==0 && i!=x && j!=y)cout<<-1<<" ";
else cout<<asd[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
解决了给你锁牛至(不会封号吧)