馬的遍歷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;
}