广搜80pts求助
查看原帖
广搜80pts求助
823773
_sh1kong_楼主2022/11/28 09:14

code:

#include<iostream>
#include<cstring>
using namespace std;
int n,m,x,y;
int a[500][500];
bool vis[500][500];
struct node{
	int x,y,step;
}p[1000001];
int pyx[10]={-2,-2,-1,1,2,2,1,-1},
	pyy[10]={1,-1,-2,-2,-1,1,2,2};
int bfs(int enx,int eny)
{
	vis[x][y]=1;
	int head=0,tail=1,xx,yy;
	p[1].x=x;
	p[1].y=y;
	p[1].step=0;
	while(head<tail)
	{
		head++;
		for(int i=0;i<8;i++)
		{
			xx=p[head].x+pyx[i];
			yy=p[head].y+pyy[i];
			if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&!vis[xx][yy])
			{
				vis[xx][yy]=1;
				tail++;
				p[tail].x=xx;
				p[tail].y=yy;
				p[tail].step=p[head].step+1;
				if(xx==enx&&yy==eny)
				{
					return p[tail].step;
				}
			}
		}
	}
	return -1;
}
int main()
{
	cin>>n>>m>>x>>y;
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(i==x&&j==y) a[x][y]=0;
			else memset(vis,0,sizeof(vis)),a[i][j]=bfs(i,j);
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cout<<a[i][j]<<" ";
		}
		cout<<"\n";
	}
}

#4 #8 TLE

2022/11/28 09:14
加载中...