bfs90求助(第8点超时)
查看原帖
bfs90求助(第8点超时)
1025958
511_Juruo_wyk楼主2024/5/12 19:44
#include<bits/stdc++.h>
using namespace std;
const int N = 405;
struct node{
	int x,y,step;
}now;
int dir[8][2]={2,1,1,2,-2,-1,-1,-2,-2,1,1,-2,2,-1,-1,2};
int vis[N][N],n,m,x,y;
int bfs(int i,int j)noexcept(true){
	queue<node>q;
	q.push(node{x,y,0});
	while(!q.empty()){
		now=q.front(),q.pop();
		if(now.x==i&&now.y==j)return 0;
		for(int k=0;k<8;k++){
			int dx=now.x+dir[k][0];
			int dy=now.y+dir[k][1];
			if(dx==i&&dy==j)return now.step+1;
			if(vis[dx][dy])continue;
			if(dx<1||dy<1||dx>n||dy>m)continue;
			vis[dx][dy]=true;
			q.push(node{dx,dy,now.step+1});
		}
	}
	return -1;
}
int main(){
	cin>>n>>m>>x>>y;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			memset(vis,0,sizeof(vis));
			printf("%-5d",bfs(i,j));
		}
		putchar('\n');
	}
	return 0;
}
2024/5/12 19:44
加载中...