HDU 1253 勝利大逃亡

2021-07-15 19:28:38 字數 1157 閱讀 2700

problem description

ignatius被魔王抓走了,有一天魔王出差去了,這可是ignatius逃亡的好機會.

魔王住在乙個城堡裡,城堡是乙個a*b*c的立方體,可以被表示成a個b*c的矩陣,剛開始ignatius被關在(0,0,0)的位置,離開城堡的門在(a-1,b-1,c-1)的位置,現在知道魔王將在t分鐘後回到城堡,ignatius每分鐘能從乙個座標走到相鄰的六個座標中的其中乙個.現在給你城堡的地圖,請你計算出ignatius能否在魔王回來前離開城堡(只要走到出口就算離開城堡,如果走到出口的時候魔王剛好回來也算逃亡成功),如果可以請輸出需要多少分鐘才能離開,如果不能則輸出-1.

超級經典的一道廣搜求最短路的題,這時我剛剛開始學廣搜,這個基本就是清晰的廣搜走迷宮的模板。

#include#includetypedef struct node

q;q q[250002] ;//佇列

bool m[51][51][51] ;//迷宮,因為只有0,1狀態,所以用bool節省記憶體

int d[6][3] = ,,,,,} ;//六個方向六種走法,

int a,b,c,t ;

int ok(int x ,int y ,int z)//判斷該點是否出邊界

void inq(int x ,int y ,int z ,int t,int &tail) //入隊,把x,y,z,t放入隊中

int bfs()//廣搜函式

if(q[tail-1].x == a-1 && q[tail-1].y == b-1 && q[tail-1].z == c-1 && q[tail-1].t <= t)//判斷剛剛入隊的元素是否為終點,如果是的話返回其用時

return q[tail-1].t;

}head++;

}return -1 ;//如果不存在可行解,按規定返回-1

}int main()

{ int c ;

scanf("%d",&c) ;

while(c--)

{scanf("%d %d %d %d",&a,&b,&c,&t);

for(int k=0; k

hdu 1253 勝利大逃亡

先前在次處漏掉了,could come的判斷,結果一直wa。if step t could come include include struct q 150000 int head,tail,step,add step flag int input 52 52 52 int end x,end y...

HDU 1253 勝利大逃亡

這個題比較坑的bfs吧,注意如果判邊界的話可能會超時,最好先人為加邊界,然後進行搜尋,搜尋最好是隊尾判斷,因為可能出現起點和終點相同的資料 wa了很久 include include includeusing namespace std const int maxn 52 struct node q...

HDU 1253 勝利大逃亡

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