题目

//要仔细写的BFS,着重对#穿越的处理哦;

//花了几个小时终于把这道简单的BFS给弄好了,我果然还需要增加熟练度,需要再仔细一些;

//代码有点乱,但我不想改了,,,,,

#include<stdio.h>
#include<string.h>
#include<queue>
#include<algorithm>
using namespace std;
struct tt
{
int x,y,step,floor;
};
int visit[][][],n,m,t;
char map1[][],map2[][];
queue <tt> q;
int xx[]={-,,,};
int yy[]={,,,-}; int bfs()
{
int i,flag;
tt front,temp;
temp.x=;temp.y=;temp.step=;temp.floor=;
q.push(temp);
visit[][][]=;
while(!q.empty())
{
front=q.front();
q.pop();
for(i=;i<;i++)
{ temp.x=front.x+xx[i];
temp.y=front.y+yy[i];
temp.step=front.step+;
temp.floor=front.floor;
if(temp.x>=&&temp.x<n&&temp.y>=&&temp.y<m)
{
if(temp.floor==&&visit[temp.x][temp.y][]==&&map1[temp.x][temp.y]!='*')
{
flag=;
visit[temp.x][temp.y][]=;
if(map1[temp.x][temp.y]=='P')
return temp.step; if(map1[temp.x][temp.y]=='#')
{
flag=;
if(map2[temp.x][temp.y]=='P')
return temp.step;
else if(map2[temp.x][temp.y]=='.'&&visit[temp.x][temp.y][]==)
{
temp.floor=;
q.push(temp); }
visit[temp.x][temp.y][]=;
}
if(flag==)
q.push(temp);
}
else if(temp.floor==&&visit[temp.x][temp.y][]==&&map2[temp.x][temp.y]!='*')
{
flag=; if(map2[temp.x][temp.y]=='P')
return temp.step; if(map2[temp.x][temp.y]=='#')
{
flag=;
if(map1[temp.x][temp.y]=='P')
return temp.step;
else if(map1[temp.x][temp.y]=='.'&&visit[temp.x][temp.y][]==)
{
temp.floor=;
q.push(temp); }
visit[temp.x][temp.y][]=;
} visit[temp.x][temp.y][]=;
if(flag==)
q.push(temp);
} }
}
}
return t+;
} int main()
{
int T,i,ans;
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&n,&m,&t);
for(i=;i<n;i++)
{
scanf("%s",map1[i]);
}
for(i=;i<n;i++)
{
scanf("%s",map2[i]);
}
memset(visit,,sizeof(visit));
while(!q.empty())
q.pop();
ans=bfs();
if(ans<=t)
printf("YES\n");
else
printf("NO\n");
}
return ;
}

hdu 2102 A计划(BFS,基础)的更多相关文章

  1. HDU 2102 A计划(BFS/DFS走迷宫)

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

  2. hdu 2102 A计划-bfs

    Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

  3. HDU - 2102 A计划 (BFS) [kuangbin带你飞]专题二

    思路:接BFS判断能否在限制时间内到达公主的位置,注意如果骑士进入传送机就会被立即传送到另一层,不会能再向四周移动了,例如第一层的位置(x, y, 1)是传送机,第二层(x, y, 2)也是传送机,这 ...

  4. HDU 2102 A计划 (BFS或DFS)

    题意:中文题. 析:是一个简单的搜索,BFS 和 DFS都可行, 主要是这个题有一个坑点,那就是如果有一层是#,另一个层是#或者*,都是过不去的,就可以直接跳过, 剩下的就是一个简单的搜索,只不过是两 ...

  5. HDU 2102 A计划(两层地图加时间限制加传送门的bfs)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2102 A计划 Time Limit: 3000/1000 MS (Java/Others)    Me ...

  6. hdu 2102 A计划

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2102 A计划 Description 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸 ...

  7. hdu - 2102 A计划 (简单bfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=2102 题目还是不难,注意起点一定是(0,0,0),然后到达P点时间<=t都可以. 用一个3维字符数组存储图 ...

  8. hdu 2102 A计划(双层BFS)(具体解释)

    转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://acm.hdu.edu.cn/showproblem.php ...

  9. HDU 2102 A计划(BFS)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 题目大意:公主被关在一个两层的迷宫里,迷宫的入口是S(0,0,0),公主的位置用P表示,时空传输 ...

随机推荐

  1. Codevs 1474 十进制转m进制

    时间限制: 1 s    空间限制: 128000 KB    题目等级 : 白银 Silver 题目描述 Description 将十进制数n转换成m进制数 m<=16 n<=100 输 ...

  2. ZigBee HA示例程序分析

    ZigBee协议栈中自带的HomeAutomation例程,虽然也是操作灯泡,但是,是通过ZCL来统一处理的,符合HA profile规范,互连互操作性较好.下面就简要分析以下ZCL的使用. 在任务数 ...

  3. Linux platform设备简介

    Technorati 标签: Linux platform     Linux在2.6内核中,针对一系列设备驱动,提供新的管理框架,成为platform机制,推出的目的,在于隔离驱动的资源和实现,使得 ...

  4. (一)Qt界面设计布局

    Qt提供四种布局: 这种布局生成的格局比较单一,这时候需要另外两个填充控件,来生成整行或整列的格式. 注意:使用Spacers控件时,必须要放在layouts中的布局中,否则无法保存. 示例: 1.往 ...

  5. <hash命令:显示、添加或清除哈希表>

    linux系统下的hash指令: 说明:linux系统下会有一个hash表,当你刚开机时这个hash表为空,每当你执行过一条命令时,hash表会记录下这条命令的路径,就相当于缓存一样.第一次执行命令s ...

  6. ERP基本功——物料的四个量

    ERP基本功——物料的四个量 在分析制造业管理问题的时候,如果能借用一些ERP里才会用到的概念,就会非常的简单,并且条理清晰. 我觉得柳中冈先生一再强调的一个观点非常有用,大意是这样的:任何人依据现有 ...

  7. php中fopen函数用法详解(打开文件)

    介绍下php中的fopen函数. 1.resource  fopen(string  $filename, string $mode [,bool $use_include_path [, resou ...

  8. PHP获取Cookie模拟登录CURL

    要提取google搜索的部分数据,发现google对于软件抓取它的数据屏蔽的厉害,以前伪造下 USER-AGENT 就可以抓数据,但是现在却不行了.利用抓包数据发现,Google 判断了 cookie ...

  9. vmware虚拟机上网:NAT搭建局域网

    若是你不知道的情况下,可以编辑虚拟机网络配置,然后恢复默认,vmware会自动给你分配好ip,默认使用的是vmware8,下面的是使用默认的配置 看图 注意:子网的ip一定要在如上图所示的范围 适配器 ...

  10. easyui获取一行数据和修改data-options的值

    <table id="tab" class="easyui-datagrid" style="width: 100%; height: 500p ...