手癌!日常手癌!被自己气死!

 #include<iostream>
#include<cstring>
#include<queue>
#include<algorithm>
#define maxn 25
using namespace std;
const int dx[]={-,,,},dy[]={,,-,};
struct point{
int x,y;
int time;
}start;
char map[maxn][maxn];
int v[maxn][maxn];
int n,m,ans;
int check(point next){
if (map[next.x][next.y]=='*' || next.x< || next.x>=n || next.y< || next.y>=m || v[next.x][next.y]) return ;
else return ;
}
int bfs(point start){
queue<point> Q;
Q.push(start);
v[start.x][start.y]=;
while (!Q.empty()){
point pre=Q.front();
Q.pop();
if (map[pre.x][pre.y]=='T'){
return pre.time;
}
for (int i=;i<;i++){
point next;
next.x=pre.x+dx[i];
next.y=pre.y+dy[i];
next.time=pre.time+;
if (check(next)) continue;
if (map[next.x][next.y]=='.' || map[next.x][next.y]=='T'){
Q.push(next);
v[next.x][next.y]=;
}
else if (map[next.x][next.y]=='|' && !(pre.time&) || map[next.x][next.y]=='-' && (pre.time&)){ //表示横着走
if (i>){
next=pre;
next.time++;
Q.push(next);
continue;
}
next.x+=dx[i];
if (check(next)) continue;
Q.push(next);
v[next.x][next.y]=;
}
else { // 表示竖着走
if (i<){
next=pre;
next.time++;
Q.push(next);
continue;
}
next.y+=dy[i];
if (check(next)) continue;
Q.push(next);
v[next.x][next.y]=;
}
}
}
}
int main(){
while (cin >> n >> m){
for (int i=;i<n;i++){
for (int j=;j<m;j++){
cin >> map[i][j];
if (map[i][j]=='S'){
start.x=i;
start.y=j;
start.time=;
}
}
}
memset(v,,sizeof(v));
ans=bfs(start);
cout << ans << endl;
}
return ;
}

hdoj1180 诡异的楼梯(bfs+奇偶判断)的更多相关文章

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

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

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

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

  3. hdu1180 诡异的楼梯 bfs

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

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

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

  5. hdu 1180:诡异的楼梯(BFS广搜)

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

  6. HDU 1180 诡异的楼梯(超级经典的bfs之一,需多回顾)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1180 诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others)     ...

  7. HDU 1180 诡异的楼梯【BFS/楼梯随时间变化】

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

  8. HDU 1180 诡异的楼梯(BFS)

    诡异的楼梯 Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status ...

  9. 诡异的楼梯(bfs)hdu1180

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

随机推荐

  1. ObjC.instancetype

    1. instancetype http://nshipster.com/instancetype/ 2. Objc的扩展 http://clang.llvm.org/docs/LanguageExt ...

  2. Laravel 上使用 phpexcel的两种方式

    原创 2017年06月24日 20:24:31 1229 文章采集与网上 方式1.使用原生的phpexcel , http://blog.csdn.net/CSwfe/article/details/ ...

  3. 【附案例】UI交互设计不会做?设计大神带你开启动效灵感之路

    随着网络技术的创新发展,如今UI交互设计应用越来越广泛,显然已经成为设计的主流及流行的必然趋势.UI界面交互设计中的动效包括移动,滑块,悬停效果,GIF动画等.UI界面交互设计为何越来越受到青睐?它有 ...

  4. oracle去重试验

    http://blog.csdn.net/lunajiao/article/details/76014488

  5. part1:4-linux快速体验

    1.Linux部分目录结构介绍 /:根目录,一般根目录下只存放目录,尽量不要存放文件:/etc./bin./dev./lib./sbin应该和根目录放置在一个分区中. /bin:可执行二进制文件目录, ...

  6. Android中px, ppi, dpi, dp, dip, sp概念解析

    Android中px, ppi, dpi, dp, dip, sp概念解析

  7. 2018.09.27 bzoj2510: 弱题(概率dp+循环矩阵优化)

    传送门 简单概率dp. 显然每次转移的式子可以用一个矩阵表示出来: 这个是循环矩阵. 因此只用维护第一行快速幂一波就行了. 代码: #include<bits/stdc++.h> #def ...

  8. 2018.07.03 POJ 2318 TOYS(二分+简单计算几何)

    TOYS Time Limit: 2000MS Memory Limit: 65536K Description Calculate the number of toys that land in e ...

  9. 2018.08.04 洛谷P3380 【模板】二逼平衡树(树套树)

    传送门 技不如人,写的权值线段树套线段树在bzoj上无论如何都卡不过空间. 这是一道树套树简单题,感觉没什么好说的. 直接权值线段树套平衡树就行了. 代码: #include<bits/stdc ...

  10. 2018.06.29 NOIP模拟 Gcd(容斥原理)

    Gcd 题目背景 SOURCE:NOIP2015-SHY-2 题目描述 给出n个正整数,放入数组 a 里. 问有多少组方案,使得我从 n 个数里取出一个子集,这个子集的 gcd 不为 1 ,然后我再从 ...