bfs30分后面全wa
  • 板块P1443 马的遍历
  • 楼主izzxm
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/7/24 08:45
  • 上次更新2023/10/27 18:42:05
查看原帖
bfs30分后面全wa
23248
izzxm楼主2022/7/24 08:45
#include<cstdio>
#include<queue>
using namespace std;
int n,m,x,y,a[410][410],vis[410][410],v1[8]={-1,-1,1,1,2,-2,2,-2},v2[8]={-2,2,-2,2,-1,-1,1,1};
queue <int> q;
int main()
{
	scanf("%d%d%d%d",&n,&m,&x,&y);
	vis[x][y]=1;q.push(x),q.push(y);
	while(!q.empty())
	{
		register int s=q.front();q.pop();
		register int t=q.front();q.pop();
		for(register int i=0;i<8;i++)
		{
			register int s1=s+v1[i],t1=t+v2[i];
			if(s1>0&&s1<=n&&t1>0&&t1<=m)
				if(!vis[s1][t1])
				{
					a[s1][t1]=a[s][t]+1,vis[s1][t1]=1;
					q.push(s1),q.push(t1);
				}
		}
	}
	for(register int i=1;i<=n;i++)
	{
		for(register int j=1;j<=m;j++)
			!vis[i][j]?printf("-1   "):printf("%d    ",a[i][j]);
		printf("\n");
	}
	return 0;
}
2022/7/24 08:45
加载中...