对着题解看了半天愣是没发现错哪了
#include<bits/stdc++.h>
using namespace std;
const int N=410;
int mp[N][N];
bool vis[N][N];
int sx,sy,n,m;
int dx[8]={-2,-1,1,2, 2, 1,-1,-2};
int dy[8]={ 1, 2,2,1,-1,-2,-2,-1};
struct node{
int x,y;
};
/*
-----------------------------
| # | | # |
-----------------------------
# | | | | #
-----------------------------
| | * | |
-----------------------------
# | | | | #
-----------------------------
| # | | # |
-----------------------------
*/
void bfs(){
queue<node> que;
que.push({sx,sy});
mp[sx][sy]=0;
vis[sx][sy]=true;
while(!que.empty()){
for(int i=0;i<8;i++){
node n1=que.front();
int xx=n1.x+dx[i];
int yy=n1.y+dy[i];
if(xx>=0&&xx<n&&yy>=0&&yy<m&&!vis[xx][yy]){
vis[xx][yy]=true;
mp[xx][yy]=mp[n1.x][n1.y]+1;
que.push({xx,yy});
}
}
que.pop();
}
return;
}
int main(){
memset(mp,-1,sizeof(mp));
cin>>n>>m>>sx>>sy;
mp[sx][sy]=0;
bfs();
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cout<<setw(5)<<mp[i][j];
}
cout<<endl;
}
return 0;
}
thx