hdu 2102 BFS
思路:bfs搜一发
AC代码:
- #include "map"
- #include "queue"
- #include "math.h"
- #include "stdio.h"
- #include "string.h"
- #include "iostream"
- #include "algorithm"
- #define abs(x) x > 0 ? x : -x
- #define max(a,b) a > b ? a : b
- #define min(a,b) a < b ? a : b
- using namespace std;
- int di[][] = {{,,},{,,},{,,-},{,-,},{,,},{-,,}};
- int Map[][][];
- bool vis[][][];
- int t;
- struct Node
- {
- int zz,xx,yy;
- int step;
- };
- void Bfs()
- {
- memset(vis,,sizeof(vis));
- queue<Node>Q;
- Node now,next;
- int l,r;
- now.zz=;
- now.xx=;
- now.yy=;
- now.step=;
- vis[][][] = ;
- Q.push(now);
- while(!Q.empty())
- {
- now = Q.front();
- Q.pop();
- if(Map[now.zz][now.xx][now.yy]==)
- {
- if(now.step<=t)
- printf("YES\n");
- else
- printf("NO\n");
- return;
- }
- if(Map[now.zz][now.xx][now.yy]==)
- l=,r=;
- if(Map[now.zz][now.xx][now.yy]==)
- l=,r=;
- for(int i=l; i<r; i++)
- {
- next.zz = now.zz + di[i][];
- next.xx = now.xx + di[i][];
- next.yy = now.yy + di[i][];
- next.step = now.step + ;
- if(i==||i==)
- next.step = now.step;
- if(Map[next.zz][next.xx][next.yy]!=)
- {
- if(!vis[next.zz][next.xx][next.yy])
- {
- vis[next.zz][next.xx][next.yy] = ;
- Q.push(next);
- }
- }
- }
- }
- printf("NO\n");
- }
- int main()
- {
- int c,n,m,i,j,k;
- char s;
- scanf("%d",&c);
- while(c--)
- {
- memset(Map,,sizeof(Map));
- scanf("%d%d%d",&n,&m,&t);
- for(i=; i<=; i++)
- {
- for(j=; j<=n; j++)
- {
- getchar();
- for(k=; k<=m; k++)
- {
- scanf("%c",&s);
- if(s=='S'||s=='.')
- Map[i][j][k] = ;
- if(s=='P')
- Map[i][j][k] = ;
- if(s=='#')
- Map[i][j][k] = ;
- if(s=='*')
- Map[i][j][k] = ;
- }
- }
- getchar();
- }
- Bfs();
- }
- return ;
- }
hdu 2102 BFS的更多相关文章
- [hdu 2102]bfs+注意INF
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 感觉这个题非常水,结果一直WA,最后发现居然是0x3f3f3f3f不够大导致的……把INF改成I ...
- hdu 4531 bfs(略难)
题目链接:点我 第一次不太清楚怎么判重,现在懂了,等下次再做 /* *HDU 4531 *BFS *注意判重 */ #include <stdio.h> #include <stri ...
- hdu - 2102 A计划 (简单bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=2102 题目还是不难,注意起点一定是(0,0,0),然后到达P点时间<=t都可以. 用一个3维字符数组存储图 ...
- hdu 2102 A计划(双层BFS)(具体解释)
转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://acm.hdu.edu.cn/showproblem.php ...
- HDU 2102 A计划(BFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 题目大意:公主被关在一个两层的迷宫里,迷宫的入口是S(0,0,0),公主的位置用P表示,时空传输 ...
- HDU 2102 A计划(两层地图加时间限制加传送门的bfs)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2102 A计划 Time Limit: 3000/1000 MS (Java/Others) Me ...
- HDU - 2102 A计划 【BFS】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2102 思路 题目有两个坑点 0.Output 说 能在T时刻 找到公主 就输出 YES 但实际上 只要 ...
- hdu 2102 A计划 具体题解 (BFS+优先队列)
题目链接:pid=2102">http://acm.hdu.edu.cn/showproblem.php?pid=2102 这道题属于BFS+优先队列 開始看到四分之中的一个的AC率感 ...
- hdu 2102 A计划-bfs
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...
随机推荐
- visio调整画布大小和旋转画布(转)
1.调整画布大小: 鼠标移至画布边界(注意不能是顶点附近),按下ctrl,就会出现双向箭头,拖动鼠标即能调整画布大小. 2.旋转画布: 鼠标移至画布顶点或附近,按下ctrl, 出现单箭头优弧,移动鼠标 ...
- ios本地推送
#import "AppDelegate.h" @interface AppDelegate () @end @implementation AppDelegate //无论程序在 ...
- 智能车学习(二十三)——浅谈心得体会
因为毕竟是竞赛,跟学校挂钩,没办法开源代码和算法完成思路,所以不能详细写太多,如果可以等价交换的话,应该还是可以向领导申请一下的. 在厦大信科通信系,参加这个比赛,大家都觉得性 ...
- PowerDesigner 16.5
PowerDesigner165_破解文件.rar 链接:http://pan.baidu.com/s/1hqEDUCG 636KB PowerDesigner165_Evaluation ...
- C#复习、面向对象阶段开始
C#复习:在控制台程序中使用结构体.集合,完成下列要求项目要求:一.连续输入5个学生的信息,每个学生都有以下4个内容:1.序号 - 根据输入的顺序自动生成,不需要手动填写,如输入第一个学生的序号是1, ...
- 【java IO】使用Java输入输出流 读取txt文件内数据,进行拼接后写入到另一个文件中
package com.sxd.test.util; import java.io.BufferedReader; import java.io.BufferedWriter; import java ...
- sqoop中,如果数据中本身有换行符,会导致数据错位
sqoop中,如果数据中本身有换行符,会导致数据错位: 解决办法: 在sqoop import时修改配置文件 sudo -u hive sqoop import --connect jdbc:mysq ...
- Liferay 6.2 改造系列之十二:修改Portal设置页面表单内容
将Portal设置页面中无用的内容删除: 在/portal-master/portal-impl/src/portal.properties文件中,有如下配置: # # Input a list of ...
- mysql root用户 远程登录其它机器,看不到数据库
在102上访问101上的数据库里,show databases;看不到里面的库, 需要在101上授权就可以了 GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.16 ...
- Linux解压文件
zip: 解压:unzip filename 解压到tmp文件夹:unzip filename.zip -d /tmp 查看压缩文件而不解压:unzip filename.zip -v tar.gz: ...