HDU 1253 勝利大逃亡 bfs

2021-06-28 03:23:54 字數 1016 閱讀 1188

題目大意:給出乙個三維迷宮的布局情況,輸入資料的第一行是乙個正整數k,表明測試資料的數量.每組測試資料的第一行是四個正整數a,b,c和t(1<=a,b,c<=50,1<=t<=1000),它們分別代表城堡的大小和魔王回來的時間.然後是a塊輸入資料(先是第0塊,然後是第1塊,第2塊......),每塊輸入資料有b行,每行有c個正整數,代表迷宮的布局,其中0代表路,1代表牆.

對於每組測試資料,如果ignatius能夠在魔王回來前離開城堡,那麼請輸出他最少需要多少分鐘,否則輸出-1. 

思路分析:還是一樣,明顯的bfs,剛開始學習,一開始用dfs實現了一下,明顯超時,後用bfs實現了,在實現是要注意結接下來要走的問題是否越界的問題。

bfs實現**:

#include#include#includeusing namespace std;

int map[55][55][55];

int d[6][3]=,,,,,};

int a,b,c,t;

struct node

};queueq;

int bfs()

if(next.x==a-1&&next.y==b-1&&next.z==c-1) return next.t;//找到出口,返回走到這所用的時間}}

return -1;//沒有找到

}int main()

}}

dfs超時**:

#include#includeint r[55][55][55];

int visit[55][55][55];

int min_t;

int a,b,c,t;

void dfs(int x,int y,int z,int tt){

if(r[x][y][z]==1||visit[x][y][z]==1||x<0||x>=a||y<0||y>=b||z<0||z>=c||tt>min_t)

return;

if(x==a-1&&y==b-1&&z==c-1){

if(tt+1

HDU1253 勝利大逃亡 BFS

hdu1253 勝利大逃亡 題意 在乙個三維的房間裡找到距離出口的最短路徑,比較最短路徑花的時間和魔王回來的時間 t,若小於等於t,則出逃成功。起點座標為 0,0,0 終點座標為 a 1,b 1,c 1 地圖中0為通路,1為牆。思路 典型的bfs,記錄的陣列從常見的二維擴充到了三維。依然使用佇列維護...

hdu1253 勝利大逃亡(BFS)

簡單的搜尋題,以往做的都是二維的,這個是三維的,建好圖之後按照以前的做法來就行了 include include include include include include define inf 1 30 define n 55 using namespace std int a n n n b...

HDU1253 勝利大逃亡 BFS

problem description ignatius被魔王抓走了,有一天魔王出差去了,這可是ignatius逃亡的好機會.魔王住在乙個城堡裡,城堡是乙個a b c的立方體,可以被表示成a個b c的矩陣,剛開始ignatius被關在 0,0,0 的位置,離開城堡的門在 a 1,b 1,c 1 的位...