#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
struct xy
{
int x,y;
}node,top;
int n,m,x0,y0,s[405][405];
const int dx[]={2,2,1,1,-2,-2,-1,-1},dy[]={-1,1,2,-2,-1,1,-2,2};
void bfs(int x,int y,int cur)
{
s[x][y]=cur;
queue<xy> q;
node.x=x;node.y=y;
q.push(node);
while(!q.empty())
{
top=q.front();
q.pop();
for(int i=0;i<8;i++)
{
int x1=top.x+dx[i],y1=top.y+dy[i];
if(x1<1||x1>n||y1<1||y1>m) continue;
if(s[x1][y1]==-1)
{
node.x=x1;
node.y=y1;
q.push(node);
s[x1][y1]=s[top.x][top.y]+1;
}
}
}
}
int main()
{
scanf("%d%d%d%d",&n,&m,&x0,&y0);
memset(s,-1,sizeof(s));
bfs(x0,y0,0);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
printf("%-5d",s[i][j]);
}
printf("\n");
}
return 0;
}
P1443 马的遍历
最新推荐文章于 2024-06-19 20:40:37 发布