CODE:
#include<iomanip>
#include<cstring>
#include<iostream>
using namespace std;
int HorseMap[410][410],n,m,startx,starty;
void bfs();
struct note{
int posx,posy,step;
}que[160001];
int Head,Tail;
int main(){
cin>>n>>m>>startx>>starty;
memset(HorseMap,-1,sizeof(HorseMap));
bfs();
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<left<<setw(5)<<HorseMap[i][j];
}
cout<<endl;
}
return 0;
}
void bfs(){
Head=1;
Tail=1;
que[Tail].posx=startx;
que[Tail].posy=starty;
que[Tail].step=0;
Tail++;
HorseMap[startx][starty]=0;
int movx[8]={2,-2,2,-2,-1,1,-1,1},movy[8]={1,1,-1,-1,2,2,-2,-2};
while(Head<Tail){
int nowx=que[Head].posx;
int nowy=que[Head].posy;
int nowstep=que[Head].step;
Head++;
for(int i=0;i<8;i++){
int nextx=nowx+movx[i];
int nexty=nowy+movy[i];
if(nexty < 1 || nexty > n || nextx < 1 || nextx > m ) continue;
if(HorseMap[nextx][nexty]!=-1) continue;
que[Tail].posx=nextx;
que[Tail].posy=nexty;
que[Tail].step=que[Head].step+1;
HorseMap[nextx][nexty]=que[Tail].step;
Tail++;
}
}
}