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

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

开始没仔细看题,看懂了发现就是一个裸的bfs,注意坐标是三维的,然后每次可以扩展出6个方向。

第一维代表在第几层。后两维代表行和列。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <queue>
 4 using namespace std;
 5 struct point
 6 {
 7     int x,y,z,step;
 8     bool operator < (const point a) const
 9     {
10         return step>a.step;
11     }
12 };
13 point t,e;
14 int n;
15 char maze[15][15][15];
16 int used[15][15][15];
17 int dir[6][3]={{-1,0,0},{1,0,0},{0,-1,0},{0,1,0},{0,0,-1},{0,0,1}};
18
19 void bfs()
20 {
21     memset(used,0,sizeof(used));
22     priority_queue<point>que;
23     que.push(t);
24     used[t.z][t.x][t.y]=1;
25     while(!que.empty())
26     {
27         point s=que.top(); que.pop();
28       //  printf("%d %d %d %d\n",s.z,s.x,s.y,s.step);
29         if(s.x==e.x&&s.y==e.y&&s.z==e.z) {printf("%d %d\n",n,s.step);return;}
30         for(int i=0;i<6;i++)
31         {
32             t.x=s.x+dir[i][0],t.y=s.y+dir[i][1],t.z=s.z+dir[i][2];
33             if(t.x>=0&&t.x<n&&t.y>=0&&t.y<n&&t.z>=0&&t.z<n&&maze[t.z][t.x][t.y]!=‘X‘&&!used[t.z][t.x][t.y])
34             {
35                 t.step=s.step+1;
36                 used[t.z][t.x][t.y]=1;
37                 que.push(t);
38             }
39         }
40     }
41     printf("NO ROUTE\n");
42 }
43 int main()
44 {
45    // freopen("a.txt","r",stdin);
46     char s[10];
47     while(~scanf("%s",s))
48     {
49         scanf("%d",&n);
50         for(int i=0;i<n;i++)
51             for(int j=0;j<n;j++)
52             scanf("%s",maze[i][j]);
53         scanf("%d%d%d",&t.y,&t.x,&t.z);
54         t.step=0;
55         scanf("%d%d%d",&e.y,&e.x,&e.z);
56         scanf("%s",s);
57         bfs();
58     }
59     return 0;
60 }
时间: 2024-09-30 04:43:30

hdu - 1240 Nightmare && hdu - 1253 胜利大逃亡(bfs)的相关文章

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,

poj 2251Dungeon Master+hdu 1253 胜利大逃亡(bfs)

Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18875   Accepted: 7324 Description You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of unit cubes which may or may not be filled

HDU 1253 胜利大逃亡 BFS 简单题

题意: Ignatius要从迷宫的(1,1,1)在时间t内跑到(a,b,c),问可不可能. (题目本来是从(0,0,0)跑到(a-1,b-1,c-1)的) 简单的3维bfs 加剪枝: a+b+c-3>t  速度会快不少. 不过我这里没有加. Input 输入数据的第一行是一个正整数K,表明测试数据的数量.每组测试数据的第一行是四个正整数A,B,C和T(1<=A,B,C<=50,1<=T<=1000),它们分别代表城堡的大小和魔王回来的时间.然后是A块输入数据(先是第0块,然后

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

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

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

胜利大逃亡 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0,0,0)的位置,离开城堡的门在(A-1,B-1,C-1)的位置,现在知道魔王将在T分钟后回到城堡,Ignatius每分钟能从一个坐标走到相邻的六个坐标中的其中一个.现在给你城堡的地图,请你计算出Ignatius能否在魔王回来前离开城堡(只要走到出

hdu 1253 胜利大逃亡(简单题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1253 题目大意:在所给的时间能顺利离开城堡. 1 #include <iostream> 2 #include <cstdio> 3 #include <queue> 4 #include <cstring> 5 using namespace std; 6 int map[55][55][55],visit[55][55][55],a,b,c,T; 7 int

杭电1253 胜利大逃亡

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

HDU 1253 胜利大逃亡 题解

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

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