【题目描述】

当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单。

假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点到出口的最短路。

【输入】

第一行是两个整数n和m(1≤n,m≤100),表示迷宫的行数和列数。

接下来n行,每行一个长为m的字符串,表示整个迷宫的布局。字符‘.’表示空地,‘#’表示墙,‘S’表示起点,‘T’表示出口。

【输出】

输出从起点到出口最少需要走的步数。

【输入样例】

3 3
S#T
.#.
...

【输出样例】

6

【源程序】

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<queue>
#include<vector>
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define N 101
#define MOD 2520
#define E 1e-12
using namespace std;
int r,c;
char a[N][N];
bool vis[N][N];
int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
struct node
{int x;int y;int step;
}q[N*100];
void bfs(int sx,int sy,int ex,int ey)
{int head=1,tail=1;memset(vis,0,sizeof(vis));vis[sx][sy]=1;q[tail].x=sx;q[tail].y=sy;q[tail].step=0;tail++;while(head<tail){int x=q[head].x;int y=q[head].y;int step=q[head].step;if(x==ex&&y==ey){printf("%d\n",step);break;}for(int i=0;i<4;i++){int nx=x+dir[i][0];int ny=y+dir[i][1];if(nx>=0&&nx<r&&ny>=0&&ny<c&&vis[nx][ny]==0&&a[nx][ny]=='.'){vis[nx][ny]=1;q[tail].x=nx;q[tail].y=ny;q[tail].step=step+1;tail++;}}head++;}
}
int main()
{int start_x,start_y,end_x,end_y;scanf("%d%d",&r,&c);for(int i=0;i<r;i++)scanf("%s",a[i]);for(int i=0;i<r;i++)for(int j=0;j<c;j++){if(a[i][j]=='S'){start_x=i;start_y=j;}if(a[i][j]=='T'){end_x=i;end_y=j;a[i][j]='.';}}bfs(start_x,start_y,end_x,end_y);return 0;
}

走出迷宫(信息学奥赛一本通-T1254)相关推荐

  1. 信息学奥赛一本通(1254:走出迷宫)

    1254:走出迷宫 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 9105     通过数: 4245 [题目描述] 当你站在一个迷宫里的时候,往往会被错综复杂的 ...

  2. 信息学奥赛一本通 1254:走出迷宫 | OpenJudge NOI 2.5 6264:走出迷宫

    [题目链接] ybt 1254:走出迷宫 OpenJudge NOI 2.5 6264:走出迷宫 [题目考点] 1. 广搜 迷宫问题 [解题思路] 广搜,迷宫问题模板题. 当数据量很小时,用深搜的方法 ...

  3. 信息学奥赛一本通:1219.马走日

    信息学奥赛一本通:1219.马走日 1219:马走日 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 7406 通过数: 3863 [题目描述] 马在中国象棋以日字形规则移动. 请 ...

  4. 信息学奥赛一本通 1255:迷宫问题 | OpenJudge NOI 2.5 7084:迷宫问题

    [题目链接] ybt 1255:迷宫问题 OpenJudge NOI 2.5 7084:迷宫问题 [题目考点] 1. 广搜 迷宫问题 输出走出迷宫的路径 [解题思路] 1. 广搜解迷宫问题 广搜,迷宫 ...

  5. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  6. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  7. [信息学奥赛一本通][POJ 2251]地牢大师

    来源:<信息学奥赛一本通> , POJ 2251 算法标签 BFS 题目描述 你现在被困在一个三维地牢中,需要找到最快脱离的出路! 地牢由若干个单位立方体组成,其中部分不含岩石障碍可以直接 ...

  8. 经典问题的另类解法——以信息学奥赛一本通c++版1216红与黑为例

    题目链接:信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn) 题目描述: 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动 ...

  9. 信息学奥赛一本通 第五版(C++版)

    信息学奥赛一本通 第五版(C++版)第一部分 C++语言 第一章 C++语言入门 第二节 C++语言程序设计 P15 1. 编写一个能够输出Hello,World!的程序,这个程序常常作为一个初学者接 ...

最新文章

  1. 550种Blender风格化笔刷素材
  2. lintcode :Partition List 链表划分
  3. SLAM: Inverse Depth Parametrization for Monocular SALM
  4. 软件工程之个人项目--词频统计
  5. WePY:在质疑中前进 | 文末福利
  6. spring—配置数据源
  7. c mysql 添加数据类型_MYSQL的常用命令和增删改查语句和数据类型
  8. 中科同向 备份软件 引领科技 存储未来
  9. Docker部署项目的步骤,按步骤一步一步来,一切都会成功
  10. 74CMS 3.0 CSRF漏洞
  11. JAVA 实现高级计算器程序
  12. 计算机左侧没有桌面菜单栏,我的电脑左侧工具栏忽然不见了
  13. Android TextView 上下滑动 左右滑动设置
  14. 深入研究Espresso的Idling Resource
  15. 学用circle画圆形。
  16. easyui tabs 的href和content属性
  17. effective java之 builder模式
  18. 计算机重启机箱亮显示器不亮,电脑重启显示器不亮如何解决
  19. 地名能否作为商标使用
  20. 程序设计思维月模拟题2-CSP201609-3 炉石传说

热门文章

  1. 爱情才是程序员的第一生产力
  2. 索要 2.3 亿元赎金!富士康遭遇黑客攻击
  3. 使用proguard混淆java web项目代码
  4. UI标签库专题五:JEECG智能开发平台 Tabs(选项卡父标签)
  5. Java容器 | 基于源码分析List集合体系
  6. 结构与算法(04):排序规则与查找算法
  7. 数据中台赋能企业数字化转型的四个关键成功因素
  8. JavaScript从初级往高级走系列————Virtual Dom
  9. 《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一1.3 建立自动化策略...
  10. 2016 China Collegiate Programming Contest Final