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...