WA #3 #7 #9
#include<iostream>
#include<queue>
#include<cstdio>
using namespace std;
struct kx{
int a,b,t;
}h;
queue<kx> q;
int n,m,x,y,a[401][401];
int main(){
cin>>n>>m>>x>>y;
h.a=x;
h.b=y;
q.push(h);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
a[i][j]=-1;
}
}
a[x][y]=0;
h.t=0;
while(!q.empty()){
kx l=q.front();
q.pop();
if(l.a-2>0&&l.b-1>0&&a[l.a-2][l.b-1]==-1){
a[l.a-2][l.b-1]=l.t+1;
kx r;
r.a=l.a-2;
r.b=l.b-1;
r.t=l.t+1;
q.push(r);
}
if(l.a-1>0&&l.b-2>0&&a[l.a-1][l.b-2]==-1){
a[l.a-1][l.b-2]=l.t+1;
kx r;
r.a=l.a-1;
r.b=l.b-2;
r.t=l.t+1;
q.push(r);
}
if(l.a+2<=n&&l.b+1<=m&&a[l.a+2][l.b+1]==-1){
a[l.a+2][l.b+1]=l.t+1;
kx r;
r.a=l.a+2;
r.b=l.b+1;
r.t=l.t+1;
q.push(r);
}
if(l.a+1<=n&&l.b+2<=m&&a[l.a+1][l.b+2]==-1){
a[l.a+1][l.b+2]=l.t+1;
kx r;
r.a=l.a+1;
r.b=l.b+2;
r.t=l.t+1;
q.push(r);
}
if(l.a-2>0&&l.b+1<=m&&a[l.a-2][l.b+1]==-1){
a[l.a-2][l.b+1]=l.t+1;
kx r;
r.a=l.a-2;
r.b=l.b+1;
r.t=l.t+1;
q.push(r);
}
if(l.a-1>0&&l.b+2<=m&&a[l.a-1][l.b+2]==-1){
a[l.a-1][l.b+2]=l.t+1;
kx r;
r.a=l.a-1;
r.b=l.b+2;
q.push(r);
}
if(l.a+2<=n&&l.b-1>0&&a[l.a+2][l.b-1]==-1){
a[l.a+2][l.b-1]=l.t+1;
kx r;
r.a=l.a+2;
r.b=l.b-1;
r.t=l.t+1;
q.push(r);
}
if(l.a+1<=n&&l.b-2>0&&a[l.a+1][l.b-2]==-1){
a[l.a+1][l.b-2]=l.t+1;
kx r;
r.a=l.a+1;
r.b=l.b-2;
r.t=l.t+1;
q.push(r);
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
printf("%-5d",a[i][j]);
}
cout<<endl;
}
return 0;
}