HDOJ 2102
如果传送门'#'的另一层是传送门'#'或者是墙'*',就可以理解为这两层的这个位置都是'*'了
还有就是传送门'#'传过去可以是空地'.' 也可以是目的地'P',不要忽略了
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <queue>
using namespace std; struct node
{
int x,y,floo;
int time;
}; char map[][][];
int visited[][][];
int walk[][]={{-,},{,},{,-},{,}};
int n,m,t; int bfs()
{
queue<node>Q;
node u;
u.x=;
u.y=;
u.floo=;
u.time=;
Q.push(u);
visited[][][]=;
while(!Q.empty())
{
u=Q.front();
Q.pop();
if(u.time==t) continue;
for(int i=;i<;++i)
{
int xx=u.x+walk[i][];
int yy=u.y+walk[i][];
if(xx>-&&xx<n&&yy>-&&yy<m&& (!visited[u.floo][xx][yy]))
{
if(map[u.floo][xx][yy]=='*') continue;
if(map[u.floo][xx][yy]=='P') return ; //下面这句一开始写成了if(map[u.floo][xx][yy]=='.'&&(!visited[u.floo][xx][yy]))
//忽略了如果是(1&&0)的话,就会把'.'当成'#'处理
if(map[u.floo][xx][yy]=='.')
{
node v;
v.x=xx;
v.y=yy;
v.floo=u.floo;
v.time=u.time+;
Q.push(v);
visited[v.floo][v.x][v.y]=;
}
else
{
int f=!u.floo;
if(map[f][xx][yy]=='P') return ;
if(map[f][xx][yy]=='.' && (!visited[f][xx][yy]))
{
node v;
v.x=xx;
v.y=yy;
v.floo=f;
v.time=u.time+;
Q.push(v);
visited[v.floo][v.x][v.y]=;
//visited[u.floo][xx][yy]=1;
}
}
}
}
}
return ;
} int main()
{
int c; scanf("%d",&c);
while(c--)
{
scanf("%d %d %d",&n,&m,&t);
for(int k=;k<;++k)
{
for(int i=;i<n;++i)
{
scanf("%s",&map[k][i]);
}
}
memset(visited,,sizeof(visited));
if(bfs()) printf("YES\n");
else printf("NO\n");
}
}
HDOJ 2102的更多相关文章
- hdoj 2102 A计画 【BFS】
称号:hdoj 2102 A计画点击打开链接 意甲冠军:文的就不说了.求救出公主所须要的最短时间,所以用广搜. 分析:读题之后不难做,比一般的题目多了一个条件就是能够传送,那么我们能够在广搜里面加一个 ...
- HDOJ 2102 A计划(bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 思路分析: <1>搜索方法分析:由于需要寻找最短的找到公主的路径,所以采用bfs搜索 ...
- BFS HDOJ 2102 A计划
题目传送门 题意:中文题面 分析:双层BFS,之前写过类似的题.总结坑点: 1.步数小于等于T都是YES 2. 传送门的另一侧还是传送门或者墙都会死 3. 走到传送门也需要一步 #include &l ...
- hdoj 2102 A计划
A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- 【HDOJ】2102 A计划
BFS,不过有很多地方需要注意,比如传送机传送到另一个传送机.还有要注意格式. #include <iostream> #include <cstdio> #include & ...
- 杭电hdoj题目分类
HDOJ 题目分类 //分类不是绝对的 //"*" 表示好题,需要多次回味 //"?"表示结论是正确的,但还停留在模块阶 段,需要理解,证明. //简单题看到就 ...
- HDOJ 题目分类
HDOJ 题目分类 /* * 一:简单题 */ 1000: 入门用:1001: 用高斯求和公式要防溢出1004:1012:1013: 对9取余好了1017:1021:1027: ...
- HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序
FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDOJ 2317. Nasty Hacks 模拟水题
Nasty Hacks Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
随机推荐
- Android(java)学习笔记228:服务(service)之绑定服务调用服务里面的方法
1.绑定服务调用服务里面的方法,图解: 步骤: (1)在Activity代码里面绑定 bindService(),以bind的方式开启服务 : bindServ ...
- Audio Capture 录音
The Android multimedia framework includes support for capturing and encoding a variety of common aud ...
- python3下的super()
大家都知道super是用来解决python钻石多重继承出现的基类重复调用的问题,这个就不赘述了,不了解的请点击. 但是我发现还有个问题在于不是钻石继承时继承先后顺序的问题,也就是如果mixin与继承的 ...
- iOS9 中的一些适配问题
1.URL scheme白名单:在info文件中加入LSApplicationQueriesSchemes(Array),添加需要的scheme,如微信:weixin.wechat 支付宝:alipa ...
- Asp.net IsPostBack
Page.IsPostBack是一个标志:当前请求是否第一次打开.调用方法为:Page.IsPostBack或者IsPostBack或者this.IsPostBack或者this.Page.IsPos ...
- SQL Server附加数据库拒绝访问
打开要附加的数据库文件所在的文件夹,即扩展名为mdf的文件所在的文件夹,如下图所示: 右键单击mdf文件,选择“属性”,如下图所示: 单击“安全”选项卡,如下图所示: 单击“编辑”按钮,如 ...
- 08_linux下安装chrome
首先下载chrome,需要改hosts哦(o(^▽^)o,别告诉我你不会,可以问度娘.谷哥哦) 下载地址:https://dl.google.com/linux/direct/google-chrom ...
- javescript扩展方法
<script type="text/javascript"> //扩展方法 '原型'->'prototype' //通过类对像的prototype设置扩展方法 ...
- python -- 函数传参
一.参数传入规则 可变参数允许传入0个或任意个参数,在函数调用时自动组装成一个tuple: 关键字参数允许传入0个或任意个参数,在函数调用时自动组装成一个dict: 1. 传入可变参数: def ca ...
- Django models通过DateTimeField保存到MySQL的时间的时区问题
最近开始使用Django开发一些系统,在models.py中设置一些数据库表结构并给日期时间字段赋初值,不过在使用的过程中,遇到一点问题.问题是,我本来服务器使用的市区是“Asia/Shanghai” ...