#include<iostream>
#include<queue>
#include<iomanip>
using namespace std;
int x1,y1,m,n,vis[1001][1001],o;
struct f{
int x,y,ans;
};
void bfs(int ii,int jj){
for(int i=1;i<=1000;i++){
for(int j=1;j<=1000;j++){
vis[i][j]=0;
}
}
f a;
a.x=x1,a.y=y1,a.ans=0;
int zx[]={2,1,-2,-1,2,1,-2,-1,2,-2,2,-2};
int zy[]={1,2,-1,-2,-1,-2,1,2,-2,-2,2,2};
queue<f>q;
q.push(a);
while(q.size()){
if(q.front().x==ii&&q.front().y==jj){
cout<<left<<setw(5)<<q.front().ans;
o=1;
return;
}
a=q.front();
q.pop();
for(int i=0;i<12;i++){
if(a.x+zx[i]>0&&a.y+zy[i]>0&&a.x+zx[i]<=n&&a.y+zy[i]<=m&&vis[a.x+zx[i]][a.y+zy[i]]!=1){
f u;
u.x=a.x+zx[i];
u.y=a.y+zy[i];
u.ans=a.ans+1;
q.push(u);
vis[a.x+zx[i]][a.y+zy[i]]=1;
}
}
}
}
int main(){
cin>>n>>m>>x1>>y1;
for(int j=1;j<=n;j++){
for(int k=1;k<=m;k++){
bfs(j,k);
if(o==0){
cout<<left<<setw(5)<<-1;
}
o=0;
}
cout<<endl;
}
return 0;
}
没有过样例,有人能帮我调一下吗?