题目

//要仔细写的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. hdu 1102 Constructing Roads Kruscal

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1102 题意:这道题实际上和hdu 1242 Rescue 非常相似,改变了输入方式之后, 本题实际上更 ...

  2. DFS入门之二---DFS求连通块

    用DFS求连通块也是比较典型的问题, 求多维数组连通块的过程也称为--“种子填充”. 我们给每次遍历过的连通块加上编号, 这样就可以避免一个格子访问多次.比较典型的问题是”八连块问题“.即任意两格子所 ...

  3. 判断Featureclass的类型

    一个Featureclass可以是Shapefile Feature Class.Personal Geodatabase Feature Class.File Geodatabase Feature ...

  4. Python单元测试——深入理解unittest (转)

    单元测试的重要性就不多说了,可恶的是Python中 有太多的单元测试框架和工具,什么unittest, testtools, subunit, coverage, testrepository, no ...

  5. Linux C 程序 GTK+图形界面编程(22)

    GTK+图形界面编程 Linux大多是在字符界面,但也可以开发图形界面 目前已经存在多种Linux下开发图形界面的程序开发包:最常用的是Qt和GTK+ Qt是一个跨平台的图形界面开发库,不仅仅支持Li ...

  6. 方便实用的jQuery checkbox复选框全选功能

    // 主复选框 <input type="checkbox" id="ck" name="ckAll">// 子复选框项 < ...

  7. rhel_7.x 安装mysql

    http://database.51cto.com/art/201310/413006.htm MariaDB和MySQL --mysql-5.7.12-1.el7.x86_64.rpm-bundle ...

  8. CentOS 普通用户设置sudo权限

    1.先切换到root用户下,输入命令 su 2.添加sudo文件的写权限,命令是: chmod u+w /etc/sudoers 3.编辑sudoers文件 vi /etc/sudoers 找到 ro ...

  9. uWSGI uwsgi_response_write_body_do(): Connection reset by peer 报错的解决方法

    服务器架构是:Nginx+uWSGI+Django 某一天,发现服务器返回的response不完整,例如文档大小是200K的,但是只返回了100K给浏览器. 查了一下uWSGI的日志,发现以下错误: ...

  10. 5、WPF实现简单计算器-非常适合初学者练习

    Sample Calculator 这是微软社区WPF的一个示例,在源程序的基础上我进行了一点点修改,非常适合初学者练习,详细代码解释. 源程序的下载地址 http://code.msdn.micro ...