第一次做三维的题,这题跑g++超时了,c++过了.

#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
#define N 52
int map[N][N][N],visit[N][N][N],a,b,ttime,c;
struct Node
{
int i,j,k;
int time;
};
int dir[][3]={{1,0,0},{0,1,0},{0,0,1},{-1,0,0},{0,-1,0},{0,0,-1}};
int bfs()
{
Node t,tmp,start;
int i;
queue<Node>q;
start.i=start.j=start.k=1;
start.time=ttime;
q.push(start);
visit[1][1][1]=1;
while(!q.empty())
{
t=q.front();
q.pop();
if(t.i==a&&t.j==b&&t.k==c&&t.time>=0)
return ttime-t.time;
for(i=0;i<6;i++)
{
tmp=t;
tmp.i+=dir[i][0];
tmp.j+=dir[i][1];
tmp.k+=dir[i][2];
tmp.time--;
if(map[tmp.i][tmp.j][tmp.k]==-1||map[tmp.i][tmp.j][tmp.k]==1)
continue;
if(visit[tmp.i][tmp.j][tmp.k])
continue;
if(tmp.i==a&&tmp.j==b&&tmp.k==c)
{
if(tmp.time>=0)
return ttime-tmp.time;
else
return -1;
}
if(tmp.time>=0)
{
q.push(tmp);
visit[tmp.i][tmp.j][tmp.k]=1;
}
}
}
return -1; }
int main()
{
int t,i,j,k;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d%d",&a,&b,&c,&ttime);
memset(visit,0,sizeof(visit));
memset(map,-1,sizeof(map));
for(i=1;i<=a;i++)
for(j=1;j<=b;j++)
for(k=1;k<=c;k++)
scanf("%d",&map[i][j][k]);
printf("%d\n",bfs());
}
return 0;
}

hdu 1253 胜利大逃亡_三维的更多相关文章

  1. [ACM] hdu 1253 胜利大逃亡 (三维BFS)

    胜利大逃亡 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这但是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,能够被表示 ...

  2. HDU 1253 胜利大逃亡(三维BFS)

    点我看题目 题意 : 中文题不详述. 思路 :因为还牵扯到层的问题,所以用三维的解决,不过这个还是很简单的BFS,六个方向搜一下就可以了,一开始交的时候老是超时,怎么改都不对,后来看了一个人写的博客, ...

  3. hdu 1253 胜利大逃亡 (三维简单bfs+剪枝)

    胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  4. hdu 1253:胜利大逃亡(基础广搜BFS)

    胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  5. hdu 1253 胜利大逃亡 (代码详解)解题报告

    胜利大逃亡 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示 ...

  6. HDU 1253 胜利大逃亡 NYOJ 523【BFS】

    胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  7. HDU 1253 胜利大逃亡 题解

    胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  8. hdu 1253 胜利大逃亡(广搜,队列,三维,简单)

    题目 原来光搜是用队列的,深搜才用栈,我好白痴啊,居然搞错了 三维的基础的广搜题 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #in ...

  9. hdu - 1240 Nightmare && hdu - 1253 胜利大逃亡(bfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=1240 开始没仔细看题,看懂了发现就是一个裸的bfs,注意坐标是三维的,然后每次可以扩展出6个方向. 第一维代表在 ...

随机推荐

  1. ListView.setOnItemClickListener无效

    如果ListView中的单个Item的view中存在checkbox,button等view,会导致ListView.setOnItemClickListener无效, 事件会被子View捕获到,Li ...

  2. UVA_埃及分数(Hard Version) UVA 12588

    Problem EEg[y]ptian Fractions (HARD version)Given a fraction a/b, write it as a sum of different Egy ...

  3. Valid Anagram 解答

    Question Given two strings s and t, write a function to determine if t is an anagram of s. For examp ...

  4. java中的TreeMap如何顺序按照插入顺序排序

    java中的TreeMap如何顺序按照插入顺序排序 你可以使用LinkedHashMap  这个是可以记住插入顺序的. 用LinkedHashMap吧.它内部有一个链表,保持插入的顺序.迭代的时候,也 ...

  5. SDP简要解析

    1.概述SDP也是MMUSIC工作组的一个产品,在MBONE内容中用得很多.其目的就是在媒体会话中,传递媒体流信息,允许会话描述的接收者去参与会话.SDP基本上在internet上工作.他定义了会话画 ...

  6. IOS添加多个按钮在导航栏

    UIView *customView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 75.0f, 30.0f)]; UIButton * ...

  7. where 1=1

    sql: where 1=1 1=1 永真, 1<>1 永假. 1<>1 的用处: 用于只取结构不取数据的场合 例如: 拷贝表 create   table_name   as ...

  8. 代码中实际运用memcached——mycode

    1.下载安装64位memcached.exe  下载地址:http://blog.couchbase.com/memcached-windows-64-bit-pre-release-availabl ...

  9. POJ 2479-Maximum sum(线性dp)

    Maximum sum Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 33918   Accepted: 10504 Des ...

  10. 力挺8天入门wpf【转载】

    8天入门wpf—— 第八天 最后的补充 摘要: 从这一篇往前看,其实wpf中还有很多东西没有讲到,不过我的原则还是将比较常用的知识点过一遍,如果大家熟悉了这些知识,基本功也就打的差不多了,后续可以等待 ...