ssl1613最短路徑問題

2021-07-11 02:06:26 字數 859 閱讀 6129

description

平面上有n個點(n<=100),每個點的座標均在-10000~10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點直線的距離。現在的任務是找出從一點到另一點之間的最短路徑。

input

輸入檔案short.in,共有n+m+3行,其中:

第一行為乙個整數n。

第2行到第n+1行(共n行),每行的兩個整數x和y,描述乙個點的座標(以乙個空格隔開)。

第n+2行為乙個整數m,表示圖中的連線個數。

此後的m行,每行描述一條連線,由兩個整數i,j組成,表示第i個點和第j個點之間有連線。

最後一行:兩個整數s和t,分別表示源點和目標點。

output

輸出檔案short.out僅一行,乙個實數(保留兩位小數),表示從s到t的最短路徑的長度。

題解

floyed的時間複雜度是o(n^3),適用於出現負權邊的情況。

乙個三重迴圈,第一層迴圈中間點k,第二三層迴圈起點終點i,j,如果i到j的距離加上k到j的距離小於原先i到j的距離,那麼就用這個更短的路徑長度來更新原先i到j的距離。

for i:=1 to n do

for j:=1 to n do

for k:=1 to n do

f[j,k]:=min(f[j,i]+f[i,k],f[j,k]);

**

ssl1613 最短路徑問題

最短路徑問題 time limit 10000ms memory limit 65536k total submit 312 accepted 160 case time limit 1000ms description 平面上有n個點 n 100 每個點的座標均在 10000 10000之間。其中...

最短路徑問題 SSL 1613

平面上有n個點 n 100 每個點的座標均在 10000 10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點直線的距離。現在的任務是找出從一點到另一點之間的最短路徑。輸入檔案short.in,共有n m 3行,其中 第一行為乙個整數n。第...

SSL 1613最短路徑問題

time limit 1000ms memory limit 65536k 平面上有n個點 n 100 每個點的座標均在 10000 10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點直線的距離。現在的任務是找出從一點到另一點之間的最短路...