BFS求调!
查看原帖
BFS求调!
469311
chen_kun楼主2024/11/22 20:56

80分RE两个点

数组再开大一点就RE三个点

#include<bits/stdc++.h>
#define int long long 
using namespace std;
int n,m,vis[222][222],dx[25]={1,-1,1,-1,2,-2,2,-2},dy[25]={2,2,-2,-2,1,1,-1,-1},xx,yy,X,Y;
char a[222][222];
struct node{int x,y,cnt;};
void bfs(){
	queue<node>q;
	q.push({xx,yy,0});
	vis[xx][yy]=1;
	while(!q.empty()){
		int x=q.front().x,y=q.front().y,cnt=q.front().cnt;
		if(x==X&&y==Y){cout<<cnt;return;}
		for(int i=0;i<8;i++){
			int tx=x+dx[i],ty=y+dy[i];
			if(vis[tx][ty]==0&&a[tx][ty]!='*'&&tx&&ty&&tx<=n&&ty<=m) vis[tx][ty]=1,q.push({tx,ty,cnt+1});
		}
		q.pop();
	}
}
signed main(){
	cin>>m>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
			if(a[i][j]=='K') xx=i,yy=j;
			if(a[i][j]=='H') X=i,Y=j;
		}
	}
	bfs();
	return 0;
}
/*

*/
2024/11/22 20:56
加载中...