A计划

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 16914    Accepted Submission(s): 4251

Problem Description
可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验。魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老。年迈的国王正是心急如焚,告招天下勇士来拯救公主。不过公主早已习以为常,她深信智勇的骑士LJ肯定能将她救出。
现据密探所报,公主被关在一个两层的迷宫里,迷宫的入口是S(0,0,0),公主的位置用P表示,时空传输机用#表示,墙用*表示,平地用.表示。骑士们一进入时空传输机就会被转到另一层的相对位置,但如果被转到的位置是墙的话,那骑士们就会被撞死。骑士们在一层中只能前后左右移动,每移动一格花1时刻。层间的移动只能通过时空传输机,且不需要任何时间。
 
Input
输入的第一行C表示共有C个测试数据,每个测试数据的前一行有三个整数N,M,T。 N,M迷宫的大小N*M(1 <= N,M <=10)。T如上所意。接下去的前N*M表示迷宫的第一层的布置情况,后N*M表示迷宫第二层的布置情况。
 
Output
如果骑士们能够在T时刻能找到公主就输出“YES”,否则输出“NO”。
 
Sample Input
1
5 5 14
S*#*.
.#...
.....
****.
...#.
 
..*.P
#.*..
***..
...*.
*.#..
 
Sample Output
YES
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
const int MAXN=;
struct Node{
int x,y,z,step;
Node(){}
Node(int z,int y,int x,int step)
{
this->x=x;
this->y=y;
this->z=z;
this->step=step;
}
};
int n,m,limit;
char mz[][MAXN][MAXN];
int vis[][MAXN][MAXN];
int dy[]={,,,-};
int dx[]={,,-,};
void bfs()
{
memset(vis,,sizeof(vis));
queue<Node> que;
que.push(Node(,,,));
vis[][][]=;
while(!que.empty())
{
Node now=que.front();que.pop();
if(mz[now.z][now.y][now.x]=='P')
{
printf("YES\n");
return ;
}
for(int i=;i<;i++)
{
int ny=dy[i]+now.y;
int nx=dx[i]+now.x;
int ns=now.step+;
if(<=ny&&ny<n&&<=nx&&nx<m&&mz[now.z][ny][nx]!='*'&&!vis[now.z][ny][nx]&&ns<=limit)
{
vis[now.z][ny][nx]=;
if(mz[now.z][ny][nx]=='#')
{
int opposite=(now.z==?:);
if(mz[opposite][ny][nx]!='*'&&mz[opposite][ny][nx]!='#')//防止进入两层相对位置均为时光机
{
vis[opposite][ny][nx]=;
que.push(Node(opposite,ny,nx,now.step+));
}
}
else
{
que.push(Node(now.z,ny,nx,now.step+));
}
}
}
}
printf("NO\n");
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&n,&m,&limit);
for(int k=;k<;k++)
{
for(int i=;i<n;i++)
{
scanf("%*c");
for(int j=;j<m;j++)
{
scanf("%c",&mz[k][i][j]);
}
}
scanf("%*c");
}
bfs();
}
return ;
}

最新文章

  1. 从贝叶斯到粒子滤波——Round 1
  2. 【Python数据分析】Python3操作Excel-以豆瓣图书Top250为例
  3. jeecg小吐槽
  4. java和h5 canvas德州扑克开发中(二)
  5. 找到SQL Server的序列号
  6. Released Mocked Streams for Apache Kafka
  7. [原创]cocos2d-x研习录-第二阶 概念类之场景类(CCScene)
  8. 安装Sql server 2008时出现sql server 2005 express tools failed 怎么办?
  9. 249. Group Shifted Strings
  10. PHP正则提取HTML中img的url值
  11. 上mongodb创建一些吸取的经验教训指数
  12. 2.1 re 模块
  13. 关于Android的fragment的使用
  14. php 随机红包算法
  15. SAP 官网中文帮助文件&amp;BP中文资料汇总
  16. PHP如何处理yyyyMMddHHmmssSSSZ?
  17. C# 连接 sql server
  18. Ubuntu下面网络固定ip
  19. go接口及嵌入类型例子
  20. P2737 [USACO4.1]麦香牛块Beef McNuggets(完全背包+数论确定上界)

热门文章

  1. 第一章 安装MongoDB
  2. Linux之Xinetd服务介绍
  3. 剑指Offer——字符串的排序
  4. java菜鸟笔记(一)
  5. QT paintevent 事件, update()槽函数
  6. 转:Android命令Monkey压力测试,详解
  7. js字符串和数组的相互转化
  8. python3 列表属性
  9. Linux命令之sort用法
  10. 图片放大器——wpf