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 ...
随机推荐
- HTML5之选择上传图片文件
- Linq101-Aggregate
using System; using System.Collections.Generic; using System.Linq; namespace Linq101 { class Aggrega ...
- Javascript闭包简单理解
提到闭包,想必大家都早有耳闻,下面说下我的简单理解.平时写代码.第三方框架和组件都或多或少用到了闭包.所以,了解闭包是非常必要的.呵呵... 一.什么是闭包简而言之,就是能够读取其他函数内部变量的函数 ...
- select 1 from table where的作用?
"SELECT 1 FROM identity_approve WHERE identity_num=' " . trim($_POST['IDnumber']) . " ...
- php cookie不刷新及时生效的实现代码
<?php /** * 不刷新 cookie及时生效 */ cookie("mycookie","cookievalue",time()+60); coo ...
- struts2中IOC控制反转应用
package com.bjsxt.struts2.user.action; import java.util.Map; import org.apache.struts2.interceptor.A ...
- Codeforces 138D World of Darkraft
有一个n*m 的棋盘,每个点上标记了L,R,X 中的一个每次能选择一个没有被攻击过的点(i,j),从这个点开始发射线,射线形状为:1. 若字符是 L,向左下角和右上角发,遇到被攻击过的点就停下来2. ...
- DOM&BOM笔记
day01正课:1. DOM概述2. ***DOM树3. *查找 1. DOM概述: DHTML:动态网页技术的统称 DHTML=HTML+CSS+JS 鄙视题: HTML XHTML DHTML X ...
- 防止SQL注入攻击,数据库操作类
如果不规避,在黑窗口里面输入内容时利用拼接语句可以对数据进行攻击 如:输入Code值 p001' union select * from Info where '1'='1 //这样可以查询到所有数据 ...
- springboot工程读取配置文件application.yml的写法
现在流行springboot框架的项目,里面的默认配置文件为application.yml,我们怎样读取这个配置文件呢? 先贴上我得配置文件吧 目录结构 里面内容 1 写读取配置文件的工具类 @Con ...