90分啊啊啊啊
查看原帖
90分啊啊啊啊
735141
hiGh_sPeEd楼主2023/8/31 14:54
#include <bits/stdc++.h>
#define ll long long
using namespace std;
struct point{
	ll x,y,step;
};
queue<point> niko;
ll n,m,x,y,asd[1001][1001],dir[8][2]={{1,2},{1,-2},{-1,2},{-1,-2},{2,-1},{2,1},{-2,1},{-2,-1}};
bool vis[1001][1001];

void bfs(ll nowx,ll nowy){
	point now={nowx,nowy,0};
	vis[nowx][nowy]=1;
	niko.push(now);
	while(!niko.empty()){
		now=niko.front();
		for(ll i=0;i<8;i++){
			ll xx=now.x+dir[i][0],yy=now.y+dir[i][1],sstep=now.step+1;
			if(xx<1||yy<1||xx>n||yy>m||vis[xx][yy]==1)continue;
			else{
				vis[xx][yy]=1;
				niko.push((point){xx,yy,sstep});
				asd[xx][yy]=sstep;
			}
		}
		niko.pop();
	}
}

int main(){
	cin>>n>>m>>x>>y;
	bfs(x,y);
	for(ll i=1;i<=n;i++){
		for(ll j=1;j<=m;j++){
			if(asd[i][j]==0 && i!=x && j!=y)cout<<-1<<"    ";
			else cout<<asd[i][j]<<"    ";
		}
		cout<<endl;
	}
	return 0;
}

解决了给你锁牛至(不会封号吧)

2023/8/31 14:54
加载中...