宽度优先搜索(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;
}

最新文章

  1. 11.14 T2 小x的旅行(小x的旅行)
  2. Android中Base64的简单使用
  3. 6.基于ZMQ的游戏网络层基础架构
  4. JSP标准标签库(JSTL)--XML标签库 x
  5. 不要怂,就是GAN (生成式对抗网络) (四):训练和测试 GAN
  6. CSS3中only-child伪类选择器
  7. 通过Azure Powershell获取asm及arm虚拟机的配置信息
  8. day 20 - 1 序列化模块,模块的导入
  9. 宝塔面板安装在根目录www下
  10. 使用withCount后再使用select设置查询的字段。就找不到withCount的数据了
  11. java中异常的面试
  12. Java编程基础篇第五章
  13. 第四章 CSS3概述
  14. ASP.NET批量下载文件的方法
  15. lua 工具类(一)
  16. js将时间戳转化为日期格式
  17. golang package log
  18. 【CTF WEB】文件包含
  19. Flask 对象关系
  20. 利用python输出000至999中间的数

热门文章

  1. 面试官:Zookeeper是什么,它有什么特性与使用场景?
  2. 关于IIS站点最大并发量分析
  3. 一条SQL语句执行得很慢的原因有哪些
  4. vue异步组件?
  5. springboot服务引入外部jar包在windows运行正常,在linux环境上无法加载到引入jar包的类
  6. CopyOnWriteArrayList 可以用于什么应用场景?
  7. composer安装报错
  8. 学习Apache(三)
  9. 通过pink构造简易部署脚本
  10. mybatis-03-一对多关系映射(附源码)