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( ...
随机推荐
- java 存储对象
一.存储区域: 1)寄存器.这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.但是寄存器的数量极其有限,所以寄存器根据需求进行分配.你不能直接控制,也不能在程序中感觉到寄存器存在的任何 ...
- OpenMesh 读写网格控制(读取写入纹理坐标,法向等)
OpenMesh读取网格默认是不自动读取obj网格中的法向,纹理坐标等信息的,写入网格同样也是.所以要读取(或写入)这些信息需要修改默认的选项. 先看一下其读写网格的函数 template<cl ...
- eclipse中快捷键
转为大写 ctrl+shift+x 转为小写 ctrl+shift+y 根据类名快速找到类文件 ctrl+shift+r 返回上一级 ALT + <- 速定位到某一行 ctrl+L
- Codeforces Alpha Round #20 (Codeforces format) C. Dijkstra?(裸的dijkstra)
题目链接:http://codeforces.com/problemset/problem/20/C 思路:需要用优化过的dijkstra,提供两种写法. #include <iostream& ...
- JMeter设置集合点
集合点:简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实的实现并发这感念,我们可以在需要压力的地方设置集合点, 还拿那个用户和密码的地方,每到输入用户 ...
- AngularJS学习之输入验证
1.AngularJS可以验证表单和控件可以验证输入的数据: 2.输入验证:客户端不能确保用户输入数据的安全,所以服务器端的数据验证也是必须的: 3.应用实例: <! DOCTYPE html& ...
- 【CLR in c#】属性
1.无参属性 1.为什么有字段还需要属性呢? 因为字段很容易写出不恰当的代码,破坏对象的状态,比如Age=-1.人的年纪不可能为负数.使用属性后你可以缓存某些值或者推迟创建一些内部对象,你可以以线程安 ...
- Block与代理的使用
本人其实是比较喜欢用Block的,因为用block写出来的代码,让我感觉代码要紧凑一些,看起来的时候,思路要清晰些,所以这估计也就是现在block将要代替代理的原因所在吧! 下面,直接进入主题: 一. ...
- Android自动化测试 - Robotium之Robotium在不同分辨率下clickonview不支持解决方案
使用Robotium中的clickonview方法进行点击操作时,可能在你本机上能够顺利执行,但把脚本移植到不同分辨率的设备下却有可能点不到控件的情况. 网上找了一些资料,基本一条语句可以搞定: 在m ...
- Ue4 BatteryCollector 教程笔记
H UFUNCTION(BlueprintNativeEvent) void EventName(); virtual void EventName_Implementation(); EventNa ...