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 ...
随机推荐
- python的代码检查
#!/bin/python3.4# coding=utf-8 class lexicon(object): # direction = ['north', 'south', 'east', 'west ...
- C#的一些方法读程序转c++
1.Array.Copypublic static void Copy( Array sourceArray, int sourceIndex, Array destinationArray, int ...
- httpclient之基本类
HttpHost类 主机类 主要属性有域名和端口. HttpRoute类 路由类 主要属性有targetHost(目标主要).proxyChain[]代理链 RouteTracker类 和H ...
- anaconda 设置新的环境,这样python的包随便换和安装
1.进入anaconda navigate 里面创建一个新的environment 2.cmd里面conda info -e 3.activate 环境名 然后python的包就已经换到新环境了
- hive 报错 java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable ...
- Python GUI 编程
Python GUI编程(Tkinter) Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的 ...
- 美团点评2017校招笔试真题-算法工程师B
美团点评2017校招笔试真题-算法工程师B 1.以下关于经典的k-means聚类的说法哪个是错误的? A:k-means聚类算法是全局收敛的 B:k-means的聚类结果和初始聚类中心点的选取有关 C ...
- 2018.07.08 NOIP模拟 好数(线段树)
好数 题目背景 SOURCE:NOIP2016-AHSDFZ T3 题目描述 我们定义一个非负整数是"好数",当且仅当它符合以下条件之一: 1. 这个数是 0 或 1 . 2. 所 ...
- 日期 时间选择器(DatePicker和TimePicker)实现用户选择
日期和时间 作者的设计TimePicker时,大小分布不合理,我调整宽度为match-parent高度为wrap-parent就可以了. public class MainActivity exten ...
- POJ2456 Aggressive cows 2017-05-11 17:54 38人阅读 评论(0) 收藏
Aggressive cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13993 Accepted: 6775 ...