@[xiangqianfeng](/user/671603) 这题深搜会超时,用**广搜**.
下附代码
```c
#include<bits/stdc++.h>
#define N 1000
using namespace std;
int n,m,x,y;
queue<int>q1,q2;
int vis[N][N];
int dis[N][N];
int dir1[8]={1,-1,1,-1,-2,-2,2,2,};
int dir2[8]={2,-2,-2,2,-1,1,-1,1,};
void in()//输入
{
scanf("%d%d%d%d",&n,&m,&x,&y);
}
void print()//输出
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
printf("%-5d",vis[i][j]);
}
printf("\n");
}
}
void bfs()//广搜
{
while(q1.empty()==false)
{
for(int i=0;i<8;i++)
{
int cx=q1.front()+dir1[i];
int cy=q2.front()+dir2[i];
if(cx>0&&cx<=n&&cy>0&&cy<=m&&dis[cx][cy]==0)
{
dis[cx][cy]=1;
vis[cx][cy]=vis[q1.front()][q2.front()]+1;
q1.push(cx);
q2.push(cy);
}
}
q1.pop();
q2.pop();
}
}
void initialize()//初始化
{
memset(vis,-1,sizeof(vis));
q1.push(x);
q2.push(y);
vis[x][y]=0;
dis[x][y]=1;
}
int main()
{
in();
initialize();
bfs();
print();
return 0;
}
```
by onlyfiee @ 2022-12-23 18:17:52
@[onlyfiee](/user/826691)
Thanks
by xiangqianfeng @ 2022-12-25 13:48:40