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

可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验。魔王已经发出消息说将在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 514
S*#*.
.#...
.....
****
. ...#. ..*.P #.*.. ***.. ...*. *.#..

Sample Output

YES

Source

HDU 2007-6 Programming Contest
 1 //2017-03-02
 2 #include <iostream>
 3 #include <cstdio>
 4 #include <cstring>
 5 #include <queue>
 6
 7 using namespace std;
 8
 9 struct node
10 {
11     int level, x, y, step;
12     void setNode(int l, int x, int y, int s){
13         this->level = l;
14         this->x = x;
15         this->y = y;
16         this->step = s;
17     }
18 };
19 char maze[2][15][15];
20 bool vis[2][15][15];
21 int dx[4] = {0, 1, 0, -1};
22 int dy[4] = {1, 0, -1, 0};
23
24 int main()
25 {
26     int C, T, n, m;
27     cin>>C;
28     while(C--)
29     {
30         cin>>n>>m>>T;
31         node tmp;
32         memset(vis, 0, sizeof(vis));
33         queue<node> q;
34         for(int level = 0; level < 2; level++)
35               for(int i = 0; i < n; i++)
36                   for(int j = 0; j < m; j++){
37                       cin>>maze[level][i][j];
38                     if(maze[level][i][j]=='S'){
39                         tmp.setNode(level, i, j, 0);
40                         q.push(tmp);
41                         vis[level][i][j] = 1;
42                     }
43                 }
44         int l, x, y, step, ans;
45         bool fg = false;
46         while(!q.empty())
47         {
48             l = q.front().level;
49             x = q.front().x;
50             y = q.front().y;
51             step = q.front().step;
52             if(step>T)break;
53             q.pop();
54             if(maze[l][x][y]=='P'){
55                 fg = true;
56                 break;
57             }
58             for(int i = 0; i < 4; i++)
59             {
60                 int nx = x + dx[i];
61                 int ny = y + dy[i];
62                 if(nx>=0&&nx<n&&ny>=0&&ny<m&&!vis[l][nx][ny]&&maze[l][nx][ny]!='*')
63                 {
64                     if(maze[l][nx][ny]=='#'){
65                         if(maze[l^1][nx][ny]!='*' && maze[l^1][nx][ny]!='#'){
66                             vis[l][nx][ny] = 1;
67                             vis[l^1][nx][ny] = 1;
68                             tmp.setNode(l^1, nx, ny, step+1);
69                             q.push(tmp);
70                         }
71                     }else{
72                         vis[l][nx][ny] = 1;
73                         tmp.setNode(l, nx, ny, step+1);
74                         q.push(tmp);
75                     }
76                 }
77             }
78             if(fg)break;
79         }
80         if(fg)cout<<"YES"<<endl;
81         else cout<<"NO"<<endl;
82     }
83
84     return 0;
85 }

转载于:https://www.cnblogs.com/Penn000/p/6491922.html

HDU2102(KB2-I)相关推荐

  1. HDU2102 A计划【BFS】

    A计划 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  2. 瑞萨78K0/KB2系列单片机upd78F0503A学习心得1

    瑞萨78K0/KB2系列芯片单片机很容易上手应用,不过网上关于这个系列的学习资料很少,需要用到upd78F0503A芯片做开发,就开始了我踏上瑞萨单片机的学习历程废话不多说现在开始进入学习主题: 首先 ...

  3. hdu2102 水搜索

    题意: A计划 Problem Description 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验.魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说 ...

  4. HDU-2102 A计划 BFS

    A计划 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  5. HDU2102 A计划

    解题思路:一道简单题,却WA了十几发,犯几个低级错误.还是不能急躁,     内心要平静,具体分析见代码: 1 #include<iostream> 2 #include<cstdi ...

  6. hdu2102(bfs)

    A计划 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  7. HDU-2102 A计划 dfs

    Description 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验.魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老.年迈的国 ...

  8. 七天学会「股票数据分析软件」的开发(下)

    昨天下午把<我不是药神>这部电影看了,搞得我哭的稀里哗啦,里面有一些情节触痛了内心中最薄弱的地方.药厂没有错,他们要收回前期投入的研发成本.主人公 程勇 只能算是整个事件的牺牲品,通过他的 ...

  9. DotNetBar12.1新控件——TokenEditor

    第一次接触第三方控件就是DotNetBar,现在官网已发布到12.2版本了,这里只能使用12.1破解版本,下载地址:http://www.t00y.com/file/92543094 在这个版本中出现 ...

最新文章

  1. Android Properties 存储
  2. python 旋转列表
  3. Js文本溢出自动添加省略号ellipsis
  4. python正则判断列表是否有元素,python – 从列表中删除正则表达式元素
  5. c语言 char转int_图文并茂,一文讲透C语言结构体内存对齐
  6. OnlineJudge 离线题库采集
  7. java基础 通过继承Thread类和实现Runnable接口创建线程
  8. C# 设置DateTime类型的变量值等于Null
  9. 基于地理位置标记的空间聚类分析(python-DBSCAN)
  10. cakephp2.X教程第一部分(基于cakephp1.3.4在线教程的改编)
  11. iperf 服务端发送数据_iperf使用指南
  12. 美国公布最易破解密码 专家称中国网民大量使用
  13. div 设置a4大小_如何在A4纸张尺寸页面中制作HTML页面?
  14. Win10设置VS2010以管理员身份运行
  15. AD19——双面PCB快速铺铜
  16. 转载 web前端进阶四阶段
  17. html页面中引入script标签的src的写法,/与//的区别
  18. zeppelin 连接 spark报错
  19. 安卓自定义视频播放器,有进度条暂停播放等功能
  20. Mopria Print Service现在可用于统一端点管理解决方案

热门文章

  1. 勤学勤记(四)——放弃Addon,选择纯C++
  2. 【基础】python操作Word时,自动更新目录(二)
  3. Vue antdv a-select 内容搜索过滤(filterOption)
  4. 福建信息技术学院计算机系男生宿舍怎么样,福建信息职业技术学院
  5. anaconda更改虚拟环境安装位置
  6. 数字图像处理技术及实用 MATLAB实验报告及PS作业
  7. [leetcode]Unique Paths II
  8. windows 下用开源流媒体压力测试工具 rtmpstress 测试RTMP媒体服务器负载性能
  9. strcpy()的使用注意事项
  10. cv2.imshow无法显示图像