hdoj1180 诡异的楼梯(bfs+奇偶判断)
手癌!日常手癌!被自己气死!
#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+奇偶判断)的更多相关文章
- hdu 1180诡异的楼梯(bfs)
诡异的楼梯 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Total Submis ...
- hdu 1180 诡异的楼梯 (bfs)
诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Sub ...
- hdu1180 诡异的楼梯 bfs
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1180/ 题目和不同的bfs有个不同的地方就是存在横着的或者竖着的楼梯,楼梯每过一个时刻就改变一次横竖的走向,人可 ...
- hdu - 1180 诡异的楼梯 (bfs+优先队列)
http://acm.hdu.edu.cn/showproblem.php?pid=1180 注意点就是楼梯是在harry移动完之后才会改变方向,那么只要统计到达这个点时间奇偶性,就可以知道当前楼梯是 ...
- hdu 1180:诡异的楼梯(BFS广搜)
诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Subm ...
- HDU 1180 诡异的楼梯(超级经典的bfs之一,需多回顾)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1180 诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 1180 诡异的楼梯【BFS/楼梯随时间变化】
诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submis ...
- HDU 1180 诡异的楼梯(BFS)
诡异的楼梯 Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Status ...
- 诡异的楼梯(bfs)hdu1180
诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submiss ...
随机推荐
- tomcat内存溢出问题解决思路
.修改启动时内存参数.并指定JVM时区 (在windows server 下时间少了8个小时) 在Tomcat上运行j2ee项目代码时,经常会出现内存溢出的情况,解决办法是在系统参数中增加系统参数: ...
- DB2锁机制
相比较Oracle来说,DB2的锁机制麻烦了很多,而且这个麻烦带来的不是性能的上升而是下降,不过如果细致了解的话,只能感慨不愧是数据库理论诞生的公司,在实现数据库理论上比Oracle全面得多. ...
- PAT 1072 开学寄语(20)(代码+思路)
1072 开学寄语(20 分) 下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其 QQ,封其电脑,夺其手机,收其 ipad,断其 wifi,使其百无聊赖,然后,净面.理发.整衣, ...
- 如何使用tapd?
tapd 可以编写测试用例 测试计划等 敏捷开发常用的工具.稍后会更新..
- ubuntu系统下安装pyspider:安装命令集合。
本篇内容的前提是你已安装好python 3.5.在ubuntu系统中安装pyspider最大的困难是要依赖组件经常出错,特别是pycurl,但把对应的依赖组件安装好,简单了.下面直接上代码,所有的依赖 ...
- jquery中innerWidth(),outerWidth(),outerWidth(true)和width()的区别
jquery中innerWidth(),outerWidth(),outerWidth(true)和width()的区别 var a = 元素本身的宽度: width() = a: innerWidt ...
- 2018.10.18 poj2187Beauty Contest(旋转卡壳)
传送门 旋转卡壳板子题. 就是求凸包上最远点对. 直接上双指针维护旋转卡壳就行了. 注意要时刻更新最大值. 代码: #include<iostream> #include<cstdi ...
- 2018.09.30 bzoj2223: [Coci 2009]PATULJCI(主席树)
传送门 主席树经典题目. 直接利用主席树差分的思想判断区间中数的个数是否合法然后决定左走右走就行了. 实际上跟bzoj3524是同一道题. 代码: #include<bits/stdc++.h& ...
- arduino IO口
AVR单片机的每组I/O口都配备有三个8位寄存器,分别是:方向控制寄存器DDRx.数据寄存器PORTx.输入引脚寄存器PINx(x=A/B/C/D).I/O口的工作方式和表现特征由这三个I/O寄存器控 ...
- 17)maven-surefire-plugin
http://maven.apache.org/surefire/maven-surefire-plugin/ Goals Overview The Surefire Plugin has only ...