马的遍历luogu1443
#include <bits/stdc++.h>
using namespace std;
int n,m,x,y;
int dx[9]={0,-2,-1,1,2,2,1,-1,-2};
int dy[9]={0,1,2,2,1,-1,-2,-2,-1};
const int N=400;
int d[N][N];
typedef pair<int,int> PII;
PII q[N*N];
void bfs(int x,int y) {
memset(d,-1,sizeof d);
q[0]={x,y};
d[x][y]=0;
int hh=0,tt=0;
while(hh<=tt) {
PII t=q[hh++];
for(int i=1;i<=8;i++) {
int a=t.first+dx[i];
int b=t.second+dy[i];
if(a>=1&&a<=n&&b>=1&&b<=m&&d[a][b]==-1) {
q[++tt]={a,b};
d[a][b]=d[t.first][t.second]+1;
}
}
}
}
int main() {
cin>>n>>m>>x>>y;
bfs(x,y);
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
cout<<d[i][j]<<" ";
}
cout<<endl;
}
return 0;
}