掌握求解最短路徑的 Dijsktra 算法。 【實(shí)驗(yàn)內(nèi)容】 問(wèn)題描述 一張地圖包括 n 個(gè)城市,假設(shè)城市間有 m 條路徑(有向圖),每條路徑的長(zhǎng)度 已知。給定地圖的一個(gè)起點(diǎn)城市和終點(diǎn)城市,利用 Dijsktra 算法求出起點(diǎn)到終 點(diǎn)之間的最短路徑。 輸入要求 多組數(shù)據(jù),每組數(shù)據(jù)有 m+3 行。第一行為兩個(gè)整數(shù) n 和 m,分別代表城市個(gè)數(shù) n 和路徑條數(shù) m。第二行有 n 個(gè)字符,代表每個(gè)城市的名字。第三行到第 m+2 行每 行有兩個(gè)字符 a、b 和一個(gè)整數(shù) d,代表從城市 a 到城市 b 有一條距離為 d 的路。 最后一行為兩個(gè)字符,代表待求最短路徑的城市起點(diǎn)和終點(diǎn)。當(dāng) n 和 m 都等于 0 時(shí),輸人結(jié)束。 輸出要求 每組數(shù)據(jù)輸出2行。第1行為一個(gè)整數(shù),為從起點(diǎn)到終點(diǎn)之間最短路的長(zhǎng)度。 第 2 行為一串字符串,代表該路徑。每?jī)蓚€(gè)字符之間用空格隔開。 輸入樣例 3 3 A B C A B 1 B C 1 C A 3 A C 6 8 A B C D E F A F 100 A E 30 A C 10 B C 5 C D 50 E D 20 E F 60 D F 10 A F 0 0 輸出樣例 2 A B C 60 A E D F 【實(shí)驗(yàn)提示】 此實(shí)驗(yàn)內(nèi)容即為教材算法 7.15 的擴(kuò)展,原算法求出源點(diǎn) v0 到圖中其余所有 頂點(diǎn)的最短路徑。本實(shí)驗(yàn)要求求出一個(gè)指定起點(diǎn)到一個(gè)指定終點(diǎn)的最短路徑。 為了提高算法的效率,在求解時(shí),可以加以判斷,當(dāng)已求得的終點(diǎn)為指定終點(diǎn) 時(shí),則可以終止求解,按要求輸出相應(yīng)結(jié)果。