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
Sample Output
Source
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)相关推荐
- HDU2102 A计划【BFS】
A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- 瑞萨78K0/KB2系列单片机upd78F0503A学习心得1
瑞萨78K0/KB2系列芯片单片机很容易上手应用,不过网上关于这个系列的学习资料很少,需要用到upd78F0503A芯片做开发,就开始了我踏上瑞萨单片机的学习历程废话不多说现在开始进入学习主题: 首先 ...
- hdu2102 水搜索
题意: A计划 Problem Description 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验.魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说 ...
- HDU-2102 A计划 BFS
A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU2102 A计划
解题思路:一道简单题,却WA了十几发,犯几个低级错误.还是不能急躁, 内心要平静,具体分析见代码: 1 #include<iostream> 2 #include<cstdi ...
- hdu2102(bfs)
A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU-2102 A计划 dfs
Description 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验.魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老.年迈的国 ...
- 七天学会「股票数据分析软件」的开发(下)
昨天下午把<我不是药神>这部电影看了,搞得我哭的稀里哗啦,里面有一些情节触痛了内心中最薄弱的地方.药厂没有错,他们要收回前期投入的研发成本.主人公 程勇 只能算是整个事件的牺牲品,通过他的 ...
- DotNetBar12.1新控件——TokenEditor
第一次接触第三方控件就是DotNetBar,现在官网已发布到12.2版本了,这里只能使用12.1破解版本,下载地址:http://www.t00y.com/file/92543094 在这个版本中出现 ...
最新文章
- Android Properties 存储
- python 旋转列表
- Js文本溢出自动添加省略号ellipsis
- python正则判断列表是否有元素,python – 从列表中删除正则表达式元素
- c语言 char转int_图文并茂,一文讲透C语言结构体内存对齐
- OnlineJudge 离线题库采集
- java基础 通过继承Thread类和实现Runnable接口创建线程
- C# 设置DateTime类型的变量值等于Null
- 基于地理位置标记的空间聚类分析(python-DBSCAN)
- cakephp2.X教程第一部分(基于cakephp1.3.4在线教程的改编)
- iperf 服务端发送数据_iperf使用指南
- 美国公布最易破解密码 专家称中国网民大量使用
- div 设置a4大小_如何在A4纸张尺寸页面中制作HTML页面?
- Win10设置VS2010以管理员身份运行
- AD19——双面PCB快速铺铜
- 转载 web前端进阶四阶段
- html页面中引入script标签的src的写法,/与//的区别
- zeppelin 连接 spark报错
- 安卓自定义视频播放器,有进度条暂停播放等功能
- Mopria Print Service现在可用于统一端点管理解决方案
热门文章
- 勤学勤记(四)——放弃Addon,选择纯C++
- 【基础】python操作Word时,自动更新目录(二)
- Vue antdv a-select 内容搜索过滤(filterOption)
- 福建信息技术学院计算机系男生宿舍怎么样,福建信息职业技术学院
- anaconda更改虚拟环境安装位置
- 数字图像处理技术及实用 MATLAB实验报告及PS作业
- [leetcode]Unique Paths II
- windows 下用开源流媒体压力测试工具 rtmpstress 测试RTMP媒体服务器负载性能
- strcpy()的使用注意事项
- cv2.imshow无法显示图像