算法基础⑦搜索与图论--BFS(宽度优先搜索)
2024-08-30 19:14:25
宽度优先搜索(BFS)
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#define x first
#define y second
using namespace std;
typedef pair<int,int> PII;
const int N=210;
char g[N][N];
int dis[N][N];
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
int n,m;
int T;
int bfs(PII start){
queue<PII> q;
memset(dis,-1,sizeof dis);
dis[start.x][start.y]=0;
q.push(start);
while(!q.empty()){
PII t=q.front();
q.pop();
for(int i=0;i<4;i++){
int a=t.x+dx[i],b=t.y+dy[i];
if(a>=n||a<0||b>=m||b<0)continue;
if(g[a][b]=='#')continue;
if(dis[a][b]!=-1)continue;
if(g[a][b]=='E')return dis[t.x][t.y]+1;
q.push({a,b});
dis[a][b]=dis[t.x][t.y]+1;
}
}
return -1;
}
int main(){
cin>>T;
while(T--){
cin>>n>>m;
PII start;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>g[i][j];
if(g[i][j]=='S'){
start={i,j};
}
}
}
// cout<<start.x<<start.y<<endl;
int distence=bfs(start);
if(distence==-1){
cout<<"oop!"<<endl;
}else{
cout<<distence<<endl;
}
}
return 0;
}
最新文章
- 11.14 T2 小x的旅行(小x的旅行)
- Android中Base64的简单使用
- 6.基于ZMQ的游戏网络层基础架构
- JSP标准标签库(JSTL)--XML标签库 x
- 不要怂,就是GAN (生成式对抗网络) (四):训练和测试 GAN
- CSS3中only-child伪类选择器
- 通过Azure Powershell获取asm及arm虚拟机的配置信息
- day 20 - 1 序列化模块,模块的导入
- 宝塔面板安装在根目录www下
- 使用withCount后再使用select设置查询的字段。就找不到withCount的数据了
- java中异常的面试
- Java编程基础篇第五章
- 第四章 CSS3概述
- ASP.NET批量下载文件的方法
- lua 工具类(一)
- js将时间戳转化为日期格式
- golang package log
- 【CTF WEB】文件包含
- Flask 对象关系
- 利用python输出000至999中间的数