# 看你还没有A了这题,那我就来帮你
## 你这个方法要存很大,所以N开20005就能AC
## 但你肯定想学更好的方法,下面是我的代码,简单易懂,可以参考一下qwq
```cpp
#include <bits/stdc++.h>
#define ll long long
using namespace std;
struct node{
ll x,y;
};
ll n,m,x,y;
ll dxy[8][2]={{1,2},{1,-2},{2,1},{2,-1},{-1,2},{-1,-2},{-2,1},{-2,-1}};
ll ans[405][405];
queue<node> q;
int main() {
cin>>n>>m>>x>>y;
memset(ans,-1,sizeof ans);
ans[x][y]=0;
q.push({x,y});
while(!q.empty()){
node t=q.front();
for(int i=0;i<8;i++){
ll nwx=t.x+dxy[i][0],nwy=t.y+dxy[i][1];
if(ans[nwx][nwy]!=-1||nwx<1||nwx>n||nwy<1||nwy>m) continue;
q.push({nwx,nwy});
ans[nwx][nwy]=ans[t.x][t.y]+1;
}
q.pop();
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
cout<<ans[i][j]<<" ";
cout<<endl;
}
return 0;
}
```
上次刷这题我还发帖问了别人,这次是我来回答了,那个帮我的人也AFO了
by zyh0516_lucky @ 2023-10-08 20:49:26
另外:正常的广搜要有vis数组判断(nwx,nwy)有无被访问过,但这题初值都为-1,所以可以不开vis数组
by zyh0516_lucky @ 2023-10-08 20:51:27
@[2022zhangyuanhao](/user/746930) 谢谢
by woshishadanda @ 2023-10-13 18:57:24
@[woshishadanda](/user/852112) 不谢
by zyh0516_lucky @ 2023-10-13 19:08:13