「LOJ#6121」「網絡流 24 題」孤島營救問題(BFS
題目描述
1944 年,特種兵麥克接到國防部的命令,要求立即趕赴太平洋上的一個孤島,營救被敵軍俘虜的大兵瑞恩。瑞恩被關押在一個迷宮裏,迷宮地形復雜,但幸好麥克得到了迷宮的地形圖。迷宮的外形是一個長方形,其南北方向被劃分為 nnn 行,東西方向被劃分為 mmm 列, 於是整個迷宮被劃分為 n×m n \times mn×m 個單元。每一個單元的位置可用一個有序數對 (單元的行號, 單元的列號) 來表示。南北或東西方向相鄰的 222 個單元之間可能互通,也可能有一扇鎖著的門,或者是一堵不可逾越的墻。迷宮中有一些單元存放著鑰匙,並且所有的門被分成 ppp 類, 打開同一類的門的鑰匙相同,不同類門的鑰匙不同。
大兵瑞恩被關押在迷宮的東南角,即 (n,m)(n,m)(n,m) 單元裏,並已經昏迷。迷宮只有一個入口, 在西北角。也就是說,麥克可以直接進入 (1,1)(1,1)(1,1) 單元。另外,麥克從一個單元移動到另一個 相鄰單元的時間為 111,拿取所在單元的鑰匙的時間以及用鑰匙開門的時間可忽略不計。
試設計一個算法,幫助麥克以最快的方式到達瑞恩所在單元,營救大兵瑞恩。
輸入格式
第一行有三個整數,分別表示 n,m,pn , m,pn,m,p 的值。
第二行是一個整數kkk,表示迷宮中門和墻的總數。
第 i+2i+2i+2 行 (1≤i≤k)(1 \leq i \leq k )(1≤i≤k),有 555 個整數,依次為 xi1,yi1,xi2,yi2,gix _{i1},y_{i1},x_{i2},y_{i2},g_ix?i1??,y?i1??,x?i2??,y?i2??,g?i?? :當 gi≥1g_i \geq1g?i??≥1 時,表示 (xi1,yi1)(x_{i1},y_{i1})(x?i1??,y?i1??) 單元與 (xi2,yi2)(x_{i2},y_{i2})(x?i2??,y?i2??) 單元之間有一扇第 gig_ig?i?? 類的門,當 gi=0g_i = 0g?i??=0 時, 表示 (xi1,yi1)(x_{i1},y_{i1})(x?i1??,y?i1??) 單元與 (xi2,yi2)(x_{i2},y_{i2})(