10354 Avoiding Your Boss.ppt

10354 Avoiding Your Boss.ppt

1 10354: Avoiding Your Boss ★★★☆☆ 題組:Problem Set Archive with Online Judge 題號:10354:Avoiding Your Boss 解題者:張宇翔 解題日期:2015年6月11日 題意:給定六個數字P(place)、R(roads)、BH(boss home)、OF(office)、YH(your home)、M(market)。 接下來的R行分別給定三個數字p1、p2、d,表示p1和 p2可以接通,距離為d。 Boss會在BH和OF的最短路徑(可不只一條)之間任意移 動,要求YH和M之間且不會遇到Boss的最短路徑。 題意範例: 3 2 2 3 1 3 1 2 4 2 3 4 — MISSION IMPOSSIBLE. 3 2 2 3 3 3 1 2 4 2 3 4 — MISSION IMPOSSIBLE. 4 3 2 3 1 4 1 2 4 2 3 4 1 4 10 — 10 解法: ★利用dynamic programming method求all pairs shortest paths 1.先求出每個place之間的最短路徑。 2.Boss會在BH和OF之間移動,若BH到某place的最 短路徑加某place到OF的最短路徑等於BH到OF的最 短路徑,即表示某place為BH到OF之最短路徑會經 過的點=dist[BH][i]+dist[i][OF]==dist[BH][OF] 找出Boss可能會經過的place並做紀錄。 3.再求每個place之間的最短路徑,但經第2點紀錄過的 place不能走,得出dist[YH][M]即為答案。 解法範例: 5 4 2 3 1 4 1 2 4 2 5 4 3 5 4 1 4 10 輸入: 最短路徑: 1 2 3 4 5 1 0 4 ∞ 10 ∞ 2 4 0 ∞ ∞ 4 3 ∞ ∞ 0 ∞ 4 4 10 ∞ ∞ 0 ∞ 5 ∞ 4 4 ∞ 0 1 2 3 4 5 1 0 4 12 10 8 2 4 0 8 14 4 3 12 8 0 22 4 4 10 14 22 0 18 5 8 4 4 18 0 dist[2][i]+dist[i][3]==dist[2][3] 0=i=P i=1 4 + 12 8 i=2 0 + 8 = 8 紀錄不能走 i=3 8 + 0 = 8 紀錄不能走 i=4 14 + 22 8 i=5 4 + 4 = 8 紀錄不能走 變成: 最短路徑: Ans:dist[1][4]=10 1 2 3 4 5 1 0 X X 10 X 2 X X X X X 3 X X X X X 4 10 X X 0 X 5 X X X X X 1 2 3 4 5 1 0 X X 10 X 2 X X X X X 3 X X X X X 4 10 X X 0 X 5 X X X X X 討論: 用dynamic programming method求all pairs shortest paths: 參考自高等程式設計上課講義P 2-37 * * * * * * * * 1 * * * * * * * *

文档评论(0)

1亿VIP精品文档

相关文档