我太蒟蒻了
#include<iostream>
#include<cstring>
using namespace std;
int n,m,xxx,yyy;
int vis[410][410];
struct node{
int x,y,step;
}q[410410],p;
int dx[]={-1,-2,-2,-1,1,2,2,1};
int dy[]={2,1,-1,-2,-2,-1,1,2};
int bfs(int a,int b){
q[1].x=xxx;
q[1].y=yyy;
q[1].step=0;
int h=0,t=1;
int mi=2147483647;
vis[xxx][yyy]=1;
while(h<t){
p=q[++h];
if(p.x==a&&p.y==b){
mi=min(mi,p.step);
}
for(int i=0;i<7;i++){
int xx=dx[i]+p.x;
int yy=dy[i]+p.y;
if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&!vis[xx][yy]){
vis[xx][yy]=1;
t++;
q[t].x=xx;
q[t].y=yy;
q[t].step=p.step+1;
}
}
}
if(mi==2147483647)return -1;
return mi;
}
int main(){
cin>>n>>m>>xxx>>yyy;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
memset(vis,0,sizeof(vis));
printf("%-5d",bfs(i,j));
}
cout<<'\n';
}
return 0;
}