求助,MLE,玄关
查看原帖
求助,MLE,玄关
672757
封禁用户楼主2024/7/18 11:32
#include<bits/stdc++.h>
using namespace std;
long long n,m,x,y;
long long nn[401][401];
long long yd[10][3]={{1,-2},{1,2},{2,1},{2,-1},{-1,-2},{-1,2},{-2,1},{-2,-1}};
struct dian
{
	long long a,b,s;
};
void bfs()
{
	dian now,nex;
	now.a=x,now.b=y,now.s=0;
	queue<dian>dl;
	dl.push(now);
	for(long long i=1;;i++)
	{
		if(dl.empty())
		{
			break;
		}
		now=dl.front();
		dl.pop();
		nn[now.a][now.b]=now.s;
		for(long long i=0;i<8;i++)
		{
			nex.a=now.a+yd[i][0];
			nex.b=now.b+yd[i][1];
			nex.s=now.s+1;
			if(!(nex.a<1||nex.b<1||nex.a>n||nex.b>m||nn[nex.a][nex.b]!=-1))
			{
				dl.push(nex);
			}
		}
	}
}
int main()
{
	cin>>n>>m>>x>>y;
	memset(nn,-1,sizeof(nn));
	bfs();
	for(long long i=1;i<=n;i++)
	{
		for(long long j=1;j<=m;j++)
		{
			printf("%-5d",nn[i][j]);
		}
		printf("\n");
	}
	return 0;
}
2024/7/18 11:32
加载中...