HDU2102(KB2-I)
A计划
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 20023 Accepted Submission(s): 5077
Problem Description
现据密探所报,公主被关在一个两层的迷宫里,迷宫的入口是S(0,0,0),公主的位置用P表示,时空传输机用#表示,墙用*表示,平地用.表示。骑士们一进入时空传输机就会被转到另一层的相对位置,但如果被转到的位置是墙的话,那骑士们就会被撞死。骑士们在一层中只能前后左右移动,每移动一格花1时刻。层间的移动只能通过时空传输机,且不需要任何时间。
Input
Output
Sample Input
...#.
..*.P
#.*..
***..
...*.
*.#..
Sample Output
Source
//2017-03-02
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue> using namespace std; struct node
{
int level, x, y, step;
void setNode(int l, int x, int y, int s){
this->level = l;
this->x = x;
this->y = y;
this->step = s;
}
};
char maze[][][];
bool vis[][][];
int dx[] = {, , , -};
int dy[] = {, , -, }; int main()
{
int C, T, n, m;
cin>>C;
while(C--)
{
cin>>n>>m>>T;
node tmp;
memset(vis, , sizeof(vis));
queue<node> q;
for(int level = ; level < ; level++)
for(int i = ; i < n; i++)
for(int j = ; j < m; j++){
cin>>maze[level][i][j];
if(maze[level][i][j]=='S'){
tmp.setNode(level, i, j, );
q.push(tmp);
vis[level][i][j] = ;
}
}
int l, x, y, step, ans;
bool fg = false;
while(!q.empty())
{
l = q.front().level;
x = q.front().x;
y = q.front().y;
step = q.front().step;
if(step>T)break;
q.pop();
if(maze[l][x][y]=='P'){
fg = true;
break;
}
for(int i = ; i < ; i++)
{
int nx = x + dx[i];
int ny = y + dy[i];
if(nx>=&&nx<n&&ny>=&&ny<m&&!vis[l][nx][ny]&&maze[l][nx][ny]!='*')
{
if(maze[l][nx][ny]=='#'){
if(maze[l^][nx][ny]!='*' && maze[l^][nx][ny]!='#'){
vis[l][nx][ny] = ;
vis[l^][nx][ny] = ;
tmp.setNode(l^, nx, ny, step+);
q.push(tmp);
}
}else{
vis[l][nx][ny] = ;
tmp.setNode(l, nx, ny, step+);
q.push(tmp);
}
}
}
if(fg)break;
}
if(fg)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
} return ;
}
HDU2102(KB2-I)的更多相关文章
- A计划 hdu2102(BFS)
A计划 hdu2102 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验.魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老.年迈的国 ...
- HDU2102 A计划
解题思路:一道简单题,却WA了十几发,犯几个低级错误.还是不能急躁, 内心要平静,具体分析见代码: #include<iostream> #include<cstdio> ...
- hdu2102(bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 分析:bfs求最短时间到达'P'点,不过本题有好几个trick,我都踩到了,自己还是太嫩了... ...
- A计划 hdu2102(bfs一般题)
A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- Hdu2102 A计划 2017-01-18 14:40 60人阅读 评论(0) 收藏
A计划 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissio ...
- hdu2102
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u014303647/article/details/27705195 题目链接: pid=2102& ...
- hdu2102 BFS
这是一道BFS的搜索题目,只是搜索范围变为了三维.定义数组visit[x][y][z]来标记空间位置,x表示楼层,y和z表示相应楼层的平面坐标. #define _CRT_SECURE_NO_DEPR ...
- HDU2102 A计划 —— BFS
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 A计划 Time Limit: 3000/1000 MS (Java/Others) Me ...
- 搜索专题: HDU2102 A计划
这不知道是公主被抓走了第几次了,反正我们的骑士救就对了(别说了,我都救我都救...);这次的迷宫有些特别,双层,带电梯(?),而且这个电梯还有生命危险,可能会撞死(一层是电梯,一层是墙),或者永远困在 ...
随机推荐
- nc,远程传输文件
linux互传文件nc命令 使用nc命令可以很快的在两台主机传递文件,且不需要在同一网段,只要设置好端口即可. 一.安装(CentOS下) yum install -y nc (需要root权限 ...
- 使用git工具删除github上的文件或者文件夹
解决 使用git工具删除github上的文件或者文件夹 当我们需要从github上删除一些我们不需要的文件或者文件夹时,如果通过github来操作的话,将会很麻烦,因为github只允许删除一个仓库, ...
- apache2.4配置weblogic12c集群(linux环境)
首先确定环境已装apache2.4,没装的话可以看下这篇文章apache2.4一键脚本安装(linux环境) 1.下载apache分发模块mod_wl_24.so 下载apache2.4的weblog ...
- (转)Python rsplit() 方法
原文:https://www.cnblogs.com/wushuaishuai/p/7792874.html 目录 描述 语法 参数 返回值 实例 正文 回到顶部 描述 Python rsplit() ...
- docker学习(2)--基础命令
转载请注明源出处:http://www.cnblogs.com/lighten/p/6875355.html 1.基本命令 搭建好docker环境之后,使用docker help命令查看docker的 ...
- Postman安装及简介
Postman简介 不管web自动化测试还是APP自动化端,测试过程中都会涉及到接口测试.接口测试分为服务器端测试和客户端测试.今天给大家介绍一个测试服务器端的小工具--Postman.它可以构造各类 ...
- Eclipse删除switch workspace下多余的workspace
第一步:修改org.eclipse.ui.ide.prefs 文件 打开Eclipse目录的\configuration\.settings目录,找到org.eclipse.ui.ide.prefs ...
- php发送get请求
感谢:http://www.zoneself.org/2014/07/21/content_2665.html 1.用PHP发送get请求,很简单: <?php $url='http://www ...
- 【LeetCode题解】21_合并两个有序链表
目录 21_合并两个有序链表 描述 解法一:迭代 思路 Java 实现 Python 实现 解法二:递归 思路 Java 实现 Python 实现 21_合并两个有序链表 描述 将两个有序链表合并为一 ...
- C语言——打印“Hello World!”,这么简单?
打印Hello World! #inculde <stdio.h> int main(){ printf("Hello World!"); return 0; } 第一 ...