#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
int row,line,xx[4]={-1,1,0,0},yy[4]={0,0,-1,1};
char map[100][100];
bool vis[100][100];
struct node
{
int x,y,step;
}st;
void init()
{
int i,j;
bool flag=1;
for(i=0;i<row;i++)
scanf("%s",map[i]);
for(i=0;flag&&i<row;i++)
for(j=0;flag&&j<line;j++)
if(map[i][j]=='S')
{
st.x=i;
st.y=j;
st.step=0;
flag=0;
}
memset(vis,0,sizeof(vis));
vis[st.x][st.y]=1;
}
bool iscan(int x,int y)
{
if(x<0||y<0||x>=row||y>=line||vis[x][y]||map[x][y]=='*')
return 0;
return 1;
}
void bfs()
{
int i;
queue<node>qq;
node t1,t2;
qq.push(st);
while(qq.size())
{
t1=qq.front();
qq.pop();
if(map[t1.x][t1.y]=='T')
{
printf("%d\n",t1.step);
return;
}
for(i=0;i<4;i++)
{
t2=t1;
t2.x+=xx[i];
t2.y+=yy[i];
t2.step++;
if(!iscan(t2.x,t2.y))
continue;
if(map[t2.x][t2.y]=='.'||map[t2.x][t2.y]=='T')
{
vis[t2.x][t2.y]=1;
qq.push(t2);
}
else if((map[t2.x][t2.y]=='|'&&!(t1.step&1))||(map[t2.x][t2.y]=='-'&&(t1.step&1)))
{
if(i>1)
{
t2=t1;
t2.step++;
qq.push(t2);
continue;
}
t2.x+=xx[i];
if(!iscan(t2.x,t2.y))
continue;
vis[t2.x][t2.y]=1;
qq.push(t2);
}
else
{
if(i<2)
{
t2=t1;
t2.step++;
qq.push(t2);
continue;
}
t2.y+=yy[i];
if(!iscan(t2.x,t2.y))
continue;
vis[t2.x][t2.y]=1;
qq.push(t2);
}
}
}
}
int main()
{
while(scanf("%d%d",&row,&line)!=EOF)
{
init();
bfs();
}
}

版权声明:本文博主原创文章。博客,未经同意不得转载。

hdu1180奇怪的楼梯……bfs迷阵……wa该16二级,我太渣滓的更多相关文章

  1. hdu1180 诡异的楼梯 bfs

    题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1180/ 题目和不同的bfs有个不同的地方就是存在横着的或者竖着的楼梯,楼梯每过一个时刻就改变一次横竖的走向,人可 ...

  2. HDU1180:诡异的楼梯(bfs+优先队列)

    http://acm.hdu.edu.cn/showproblem.php?pid=1180 Problem Description Hogwarts正式开学以后,Harry发现在Hogwarts里, ...

  3. hdu - 1180 诡异的楼梯 (bfs+优先队列)

    http://acm.hdu.edu.cn/showproblem.php?pid=1180 注意点就是楼梯是在harry移动完之后才会改变方向,那么只要统计到达这个点时间奇偶性,就可以知道当前楼梯是 ...

  4. hdu 1180 诡异的楼梯 (bfs)

    诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Total Sub ...

  5. hdu 1180诡异的楼梯(bfs)

    诡异的楼梯 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) Total Submis ...

  6. 洛谷P1135 奇怪的电梯 BFS例题

    好,这是一道黄题.几个月前(2017.10.29)的我拿了可怜的20分. 这是当年的蒟蒻代码 #include <cstdio> #include <iostream> #in ...

  7. HDU1180:诡异的楼梯

    传送门 题意 迷宫搜索 分析 这题写起来挺简单的,锻炼搜索基本功,一开始用记忆化搜索TLE了,改用访问标记,0ms过了,用优先队列保证终点最快达到,我会在代码中提供一些强力数据 trick 1.遇到梯 ...

  8. hdu 1548 楼梯 bfs或最短路 dijkstra

    http://acm.hdu.edu.cn/showproblem.php?pid=1548 Online Judge Online Exercise Online Teaching Online C ...

  9. HDU 1548 A strange lift 奇怪的电梯(BFS,水)

    题意: 有一座电梯,其中楼层从1-n,每层都有一个数字k,当处于某一层时,只能往上走k层,或者下走k层.楼主在a层,问是否能到达第b层? 思路: 在起点时只能往上走和往下走两个选择,之后的每层都是这样 ...

随机推荐

  1. 4、基于JZ2440之编写测试代码处理(处理图片识别人脸)

    1.代码如下: void detectAndDisplay(Mat image) { CascadeClassifier ccf; //创建脸部对象 //ccf.load(xmlPath); //导入 ...

  2. P2P系统哪家强,功能其实都一样

    现在的P2P平台有好几千家了,了解了其中的几十家,发现用户端的P2P界面功能都差不多.下面来做个简要的总结: 1.通用功能  注册.登录  2.投资理财  针对理财人的投标.债权转让  3.借款申请  ...

  3. Internet连接共享只能上qq不能打开网页的问题解决

    作者:朱金灿 来源:http://blog.csdn.net/clever101 之前我写过一篇<Windows共享上网的做法>,在设置共享网络时是有一个家庭网络连接的选项的,如下图: 但 ...

  4. 任哲<<μC/OS>>

    从第二章开始啦: 程序控制块(TCB)  重要概念  相当于对应程序块的学生证,学号,,, 上面的图是一个简单的程序控制块,还会有复杂的程序控制块,也许是嵌套的两级的: 链表就相当于老师手中的花名册, ...

  5. 【BZOJ 3675】[Apio2014]序列分割

    [链接] 链接 [题意] 在这里输入题意 [题解] 模拟一下样例. 会发现.切的顺序不影响最后的答案. 只要切点确定了. 答案就确定了. 则设f[i][j]表示前i段,第i段保留到j的最大值. \(f ...

  6. [Angular2 Form] Validation message for Reactive form

    <div class="form-field"> <label>Confirm Password: </label> <input typ ...

  7. Canvas基础知识总结之中的一个

    canvas的HTML语法: <canvas> Canvas not supported </canvas> 上面这句代码中内容部分所含的文本,这种文本的叫法"后备内 ...

  8. MHA 一主两从搭建-脚本VIP-自动切换

    环境介绍:主机名 IP MHA角色 MySQL角色node1 192.168.56.26 Node MySQL Master node2 192.168.56.27 Node MySQL Master ...

  9. JSON序列化自己主动过滤NULL值

    使用Newtonsoft.Json.dll 序列化为json时主动将NULL值过滤掉.详细做法: var jSetting = new JsonSerializerSettings {NullValu ...

  10. Bluetooth---初步了解Android 蓝牙4.0

    http://developer.android.com/reference/android/bluetooth/package-summary.html android.bluttooth 提供管理 ...