广搜求调,玄关~
查看原帖
广搜求调,玄关~
1113503
xixiyan楼主2024/7/2 13:38

单纯想练一下广搜但是 WAon#8

#include<bits/stdc++.h>
using namespace std;
struct QWE{int x,y,t;};
queue<QWE> q; 
int n,m,xr,yr,xd,yd;
int dx[4][2]={{-1,0},{1,0},{0,1},{0,-1}};
char g[501][501];
bool vis[501][501];
bool bfs(){
	int x,y,t;
	vis[xr][yr]=true;
	q.push({0,0,1});
	while(!q.empty()){
		x=q.front().x;
		y=q.front().y;
		t=q.front().t;
		q.pop();
		if(x==xd && y==yd) return true;
		for(int i=0,x1,y1;i<4;i++){
			x1=x+dx[i][0];
			y1=y+dx[i][1];
			if(x1<0 || y1<0 || x1>n || y1>m) continue;
			if( g[x1][y1]=='.' && !vis[x1][y1]){
				vis[x1][y1]=true;
				q.push({x1,y1,t+1});
			}
		}
	}
	return false;
}
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cin>>g[i][j];
			if(g[i][j]=='s'){
				xr=i;
				yr=j;
			} 
			if(g[i][j]=='g'){
				xd=i;
				yd=j;
				g[i][j]='.';
			}
		}
	}
	if(bfs()) printf("Yes\n");
	else printf("No\n");
	return 0;
}


2024/7/2 13:38
加载中...