hdu 2102
简单的3维BFS
大写的YES和NO,这心粗的....唉
#include<iostream>
#include<cstdio>
#include<queue> using namespace std; char map[2][12][12];
int d[2][3];
int dir[4][2]={0,1,0,-1,-1,0,1,0};
int n,m,t; struct node{
int x,y,z;
int step;
}; int bfs(){
queue<node>q;
node cur,next;
cur.z=d[0][0];
cur.x=d[0][1];
cur.y=d[0][2];
cur.step=t;
q.push(cur);
while(!q.empty()){
cur=q.front();
q.pop();
if(cur.z==d[1][0]&&cur.x==d[1][1]&&cur.y==d[1][2]){
if(cur.step>=0)
return 1;
return 0;
}
for(int i=0;i<4;i++){
next.x=dir[i][0]+cur.x;
next.y=dir[i][1]+cur.y;
next.z=cur.z;
if(map[next.z][next.x][next.y]=='#'){
if(next.z)
next.z=0;
else
next.z=1;
}
if(next.x>=0&&next.x<n&&next.y>=0&&next.y<m&&map[next.z][next.x][next.y]!='*'){
next.step=cur.step-1;
map[next.z][next.x][next.y]='*';
q.push(next);
}
}
}
return 0;
} int main(){
//freopen("2102.in", "r", stdin);
int c,i,j,k;
cin>>c;
while(c--){
cin>>n>>m>>t;
for(i=0;i<2;i++){
for(j=0;j<n;j++){
scanf("%s",map[i][j]);
for(k=0;k<m;k++){
if(map[i][j][k]=='S'){
d[0][0]=i;
d[0][1]=j;
d[0][2]=k;
}
else if(map[i][j][k]=='P'){
d[1][0]=i;
d[1][1]=j;
d[1][2]=k;
}
else if(i&&map[i][j][k]=='*'&&map[0][j][k]=='#') //2层是墙,不能传过来
map[0][j][k]='*';
else if(i&&map[i][j][k]=='#'&&(map[0][j][k]=='#'||map[0][j][k]=='*')){
map[0][j][k]='*'; //2层是传送机
map[1][j][k]='*';
}
}
}
}
if(bfs())
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}
hdu 2102的更多相关文章
- hdu 2102 A计划
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2102 A计划 Description 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸 ...
- hdu - 2102 A计划 (简单bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=2102 题目还是不难,注意起点一定是(0,0,0),然后到达P点时间<=t都可以. 用一个3维字符数组存储图 ...
- hdu 2102 A计划(优先队列+dfs)
改了好久,上午来实验室打出来了,运行就是不对,一直找啊找!还是没找到,最后突然停电了,打好的代码还没保存呢! 刚才来的时候又重新打了一遍!!!结果一个小小的错误wrong了好久!!! 在dfs值返回时 ...
- hdu 2102 A计划(双层BFS)(具体解释)
转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://acm.hdu.edu.cn/showproblem.php ...
- A计划 HDU - 2102
A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- 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]bfs+注意INF
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 感觉这个题非常水,结果一直WA,最后发现居然是0x3f3f3f3f不够大导致的……把INF改成I ...
- 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率感 ...
随机推荐
- assert函数
这个函数在<cassert>里面,通常用来调试程序. eg: int i=1: assert(i==1):/什么也不做 assert(i==2)://程序会异常退出
- CodeForces 478C Table Decorations
Table Decorations Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u ...
- (转)C# Winform应用程序占用内存较大解决方法整理
背景: 微软的 .NET FRAMEWORK 现在可谓如火如荼了.但是,.NET 一直所为人诟病的就是“胃口太大”,狂吃内存,虽然微软声称 GC 的功能和智能化都很高,但是内存的回收问题,一直存在困扰 ...
- Hearthstone-Deck-Tracker项目的编译
https://github.com/HearthSim/Hearthstone-Deck-Tracker https://github.com/HearthSim/HearthDb https:// ...
- 【原创】pads layout 画多边形copper,出现Self-Intersecting Polygon,解决办法
在做线性位移传感器的电路板时,需要在一个很小的多边形Copper操作,总是提示“Self-Intersecting Polygon”报错,意思是outline线自身交叉,换句话说就是线宽与多边形尺寸没 ...
- VI编辑器
- asp.netMVC4(基础知识----传值问题分析)
(1)一般在数据交互的时候,都会涉及到前后台间的相互传值,一般的情况下,方法也有多种,下面就后台定义变量往前台传值: 以下是后台代码: /// <summary> /// 展示举报信息 / ...
- c++复习一:复数运算的简单实现。
复数运算的简单实现. 程序很简单了.基本忘光了复数,重新了解了基本概念.如何在平面表示一个复数,复数的长度|x|=开根 a^2+b^2.和四则运算. 程序基本点: 封装和抽象: 1)封装成员数据,私有 ...
- git本地文件回滚操作
今天有几个文件改在了其他分支上.需要回滚. 参考了下面两篇文章: Link Link 简单讲,分多个不同的阶段: 1. 用git status命令看,发现是unstaged,那么就是只在work ...
- Android控件之EditText(输入文本框控件)
一.EditText控件概述 EditText是一个非常重要的组件,可以说他是用户和Android应用进行数据传输窗口 有了他就等于有了一扇和Android应用传输的门,通过他用户可以把数据传输给A ...