胜利大逃亡--hdu1253

题目链接

http://acm.hdu.edu.cn/showproblem.php?pid=1253

广搜题

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <queue>
 4 #include <algorithm>
 5 #define inf 0x6ffffff
 6 #define N 55
 7 using namespace std;
 8
 9 int maps[N][N][N],vis[N][N][N];
10
11 int dir[6][3]={ {0,0,1},{0,1,0},{1,0,0},{0,0,-1},{0,-1,0},{-1,0,0} };
12
13 int A,B,C,t;
14
15 struct node
16 {
17     int x,y,z,step;
18 };
19
20 bool judge(int x,int y,int z)
21 {
22     return x<A&&x>=0&&y<B&&y>=0&&z<C&&z>=0&&maps[x][y][z]==0&&vis[x][y][z]==0;
23 }
24
25 int bfs(node s,node e)
26 {
27     queue<node> Q;
28     node q;
29     memset(vis,0,sizeof(vis));
30     vis[s.x][s.y][s.z]=1;
31     Q.push(s);
32     while(!Q.empty())
33     {
34         q=Q.front();
35         Q.pop();
36         if(q.x==e.x&&q.y==e.y&&q.z==e.z && q.step <=t)
37             return q.step;
38
39         if(q.step > t)
40             return -1;
41
42         for(int i=0;i<6;i++)
43         {
44             s.x=q.x+dir[i][0];
45             s.y=q.y+dir[i][1];
46             s.z=q.z+dir[i][2];
47             if(judge(s.x, s.y, s.z))
48             {
49                 vis[s.x][s.y][s.z]=1;
50                 s.step=q.step+1;
51                 Q.push(s);
52             }
53         }
54     }
55     return -1;
56
57 }
58
59 int main()
60 {
61     int T,i,j,k,ans;
62     node s,e;
63     scanf("%d",&T);
64     while(T--)
65     {
66         memset(maps,0,sizeof(maps));
67
68         scanf("%d %d %d %d",&A,&B,&C,&t);
69         for(i=0;i<A;i++)
70         {
71             for(j=0;j<B;j++)
72             {
73                 for(k=0;k<C;k++)
74                 {
75                     scanf("%d",&maps[i][j][k]);
76                 }
77             }
78         }
79         s.x=s.y=s.z=s.step=0;
80         e.x=A-1;e.y=B-1;e.z=C-1;
81
82         ans=bfs(s,e);
83
84         if(A+B+C-3>t)
85             ans=-1;
86         printf("%d\n",ans);
87     }
88     return 0;
89 }
时间: 2024-12-31 03:47:45

胜利大逃亡--hdu1253的相关文章

HDU1253 胜利大逃亡

这个问题一看,可以说和UVA532 Dungeon Master完全相同,豪情万丈地做了拷贝来程序修改,一提交结果是"Time Limit Exceeded",满脸困惑.多方调查研究后,终于懂得了程序简洁才是硬道理.也许因为测试数据量大,各个方面改进速度的措施都用了之后,总算是AC了.胜利大逃亡,逃出来了! 问题链接:HDU1253 胜利大逃亡. 题意简述:三维城堡(迷宫),每个点由0(可以经过)和1(墙)组成.输入测试用例数,输入每个例子的立体长宽高和限定的时间,起点是<1,1

hdu1253胜利大逃亡

胜利大逃亡Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 29463    Accepted Submission(s): 11101 Problem DescriptionIgnatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵

HDU----1253胜利大逃亡 BFS

胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 28472    Accepted Submission(s): 10782 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C

HDU1253 胜利大逃亡 BFS

胜利大逃亡 Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 15   Accepted Submission(s) : 7 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Igna

胜利大逃亡(续)(状态压缩bfs)

胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7357    Accepted Submission(s): 2552 Problem Description Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)……这次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢的某些地方安装了带

HDU 1253 胜利大逃亡

胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 30841    Accepted Submission(s): 11509 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔 王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C

HDOJ 题目1429 胜利大逃亡(续)(BFS)

New! 关于举办校第十五届程序设计竞赛暨2015省赛集训队选拔赛的通知 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5811    Accepted Submission(s): 2027 Problem Description Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)-- 这次魔王汲取了上次

HDU 1253 (简单三维广搜) 胜利大逃亡

奇葩!这么简单的广搜居然爆内存了,而且一直爆,一直爆,Orz 而且我也优化过了的啊,尼玛还是一直爆! 先把代码贴上睡觉去了,明天再来弄 1 //#define LOCAL 2 #include <iostream> 3 #include <cstdio> 4 #include <cstring> 5 #include <queue> 6 #include <cmath> 7 using namespace std; 8 9 struct Poin

HDU 1253 胜利大逃亡(BFS)

#include <iostream> #include <cstdlib> #include <cstdio> #include <queue> #include <cstring> using namespace std; struct node{ int x,y,z,step; }; int ma[51][51][51]; int A,B,C,T; int mv[6][3] = {{1,0,0},{0,1,0},{0,0,1},{-1,0,