bfs30求助
查看原帖
bfs30求助
574931
rlgrlgrlg楼主2022/3/25 18:36
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct point
{
	int x,y;
}a[200000];
int n,m;
ll mp[405][405];
int z[8][2]={
	2,1,
	2,-1,
	1,2,
	1,-2,
	-1,2,
	-1,-2,
	-2,1,
	-2,-1
};
queue<point> b;
inline bool judge(int x,int y)
{
	if(x<1||y<1||x>n||y>m)
	return false;
	return true;
}
int main()
{
	int x,y;
	cin>>n>>m>>x>>y;
	b.push(point{x,y});
	memset(mp,-1,sizeof(mp));
	mp[1][1]=0;;
	while(!b.empty())
	{
		point k=b.front();
		b.pop();
		for(int i=0;i<8;i++)
		{
			if(judge(k.x+z[i][0],k.y+z[i][1])&&mp[k.x+z[i][0]][k.y+z[i][1]]==-1)
			{
				b.push(point{k.x+z[i][0],k.y+z[i][1]});
				mp[k.x+z[i][0]][k.y+z[i][1]]=mp[k.x][k.y]+1;
			}
		}
	}for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			printf("%-5lld",mp[i][j]);
		}printf("\n");
	}
} 
2022/3/25 18:36
加载中...