Luogu P1443 The Traversal of Horses (My Algorithm Learning Road)
Tags: Search Breadth-First Search (BFS) Queues
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<queue>
using namespace std;
int xx[8]={2,2,1,1,-2,-2,-1,-1};
int yy[8]={1,-1,2,-2,1,-1,2,-2};
int mp[405][405];
struct horse
{
int x,y,s;
};
int main()
{
int n,m,sx,sy;
scanf("%d%d%d%d",&n,&m,&sx,&sy);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
mp[i][j]=-1;
}
}
queue <horse> Q;
horse h;
h.x=sx;
h.y=sy;
h.s=0;
Q.push(h);
mp[sx][sy]=0;
while(!Q.empty())
{
for(int i=0;i<8;i++)
{
int dx=Q.front().x+xx[i];
int dy=Q.front().y+yy[i];
if(dx>=1&&dy>=1&&dx<=n&&dy<=m&&mp[dx][dy]==-1)
{
h.x=dx;
h.y=dy;
h.s=Q.front().s+1;
Q.push(h);
mp[dx][dy]=Q.front().s+1;
}
}
Q.pop();
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
printf("%-5d",mp[i][j]);
}
printf("\n");
}
return 0;
}