社区讨论

BFS TLE...

P2298Mzc和男家丁的游戏参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lvzccx6n
此快照首次捕获于
2024/05/09 22:26
2 年前
此快照最后确认于
2024/05/10 13:02
2 年前
查看原帖
CPP
#include <bits/stdc++.h>   
using namespace std;  
int n,m;
char mp[2100][2100]; //地图
bool vis[2100][2100];
int dirx[]={1,0,-1,0}; //4个方向
int diry[]={0,-1,0,1};
struct AXI{
	int x,y;
};
queue<AXI> qu;

int bfs(int x,int y){
	
	vis[x][y]=true; 
	qu.push({x,y});
	int dep=1;
	while(!qu.empty()){
		int len=qu.size();
		while(len--){
			for(int i=0;i<4;i++){
				int tx=qu.front().x+dirx[i]; 
				int ty=qu.front().y+diry[i]; 
				if(tx<1||ty<1||tx>n||ty>m||vis[tx][ty]||mp[tx][ty]=='#'){
			      continue;
				}
				if(mp[tx][ty]=='d'){ //找到了 
					return dep;
				}
				qu.push({tx,ty});
				vis[tx][ty]=true;
			}
			qu.pop();
		}
		dep++;
	}
}
int main()  
{  
   //输入 
   cin>>n>>m;
   int x,y;//起点 
   for(int i=1;i<=n;i++){
   	for(int j=1;j<=m;j++){
   		cin>>mp[i][j];
   		if(mp[i][j]=='m'){
   			x=i,y=j;
   		}
   	}
   }
   //BFS 
   int res=bfs(x,y);
   //输出 
   if(res==0){
   	cout<<"No Way!";
   }else{
   	 cout<<res;
   }
  
   return 0;  
}

回复

0 条回复,欢迎继续交流。

正在加载回复...