宽搜80分求助
查看原帖
宽搜80分求助
577683
Neil_Seniorious楼主2022/9/12 16:44

提交记录

#include<bits/stdc++.h>
using namespace std;

const int MAXN=4e2;
const int dx[]={ 0, 1, 2,-1,-2, 1, 2,-1,-2};
const int dy[]={ 0, 2, 1, 2, 1,-2,-1,-2,-1};

struct node{
	int x;int y;int step;
}f,q[MAXN*MAXN+5];

int n,m,x,y,head=1,tail=0;
int Map[MAXN+5][MAXN+5];

void csh(){
	Map[x][y]=0;
	q[++tail].step=0;
	q[tail].x=x;
	q[tail].y=y;
}

void bfs(){
	while(head<=tail){
		node u=q[head++];
		for(int i=1;i<=8;i++){
			node v;
			v.x=u.x+dx[i];
			v.y=u.y+dy[i];
			v.step=u.step+1;
			if(v.x<0) continue;
			if(v.y<0) continue;
			if(v.x>n) continue;
			if(v.x>m) continue;
			if(Map[v.x][v.y]==-1) Map[v.x][v.y]=v.step;
			else continue;
			q[++tail]=v;
		}
	}
}

int main(){
	scanf("%d%d%d%d",&n,&m,&x,&y);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			Map[i][j]=-1;
		}
	}
	csh();
	bfs();
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			printf("%d ",Map[i][j]);
		}
		putchar('\n');
	}
	return 0;
}

以上为代码。

蒟蒻求助,勿喷。

2022/9/12 16:44
加载中...