51Nod 2673 最短路徑

2021-10-02 13:37:34 字數 866 閱讀 5167

給出一張包含n個節點、m條邊的無向圖,請你求出圖上兩點s,t間的最短路徑長度。

(請大家自行處理重邊和自環)

input

第一行兩個數n,m,分別表示節點數和邊數,以空格隔開,其中1≤n≤500,1≤m≤50000; 之後m行,每行3個數u,v,wii,表示點u和v間有一條權值為wii的邊, 其中1≤u,v≤n,1≤wii≤500000; 最後一行,兩個數s,t表示選擇的兩個點,以空格隔開。

output

輸出乙個數,表示s,t間最短路徑的長度。

sample input

4 3

1 2 6

1 3 4

2 4 2

3 4

sample output

12
題目中結點數不超過500,用floyd演算法可在規定時間內完成。需要特別處理的只有乙個地方:有重邊時,儲存較短路徑。

#include #include using namespace std;

long long d[502][502];

long long max = 0xffffffff;

int main()

for (int k = 1; k <= n; k++) // floyd

for (int i = 1; i <= n; i++)

for (int j = 1; j <= n; j++)

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

scanf("%d %d", &u, &v); // output

printf("%d", d[u][v]);

}return 0;

}

51nod 2673 最短路徑

51nod 最短路徑 1.0 秒 131,072.0 kb 0 分基礎題 給出一張包含n個節點 m條邊的無向圖,請你求出圖上兩點s,t間的最短路徑長度。請大家自行處理重邊和自環 第一行兩個數n,m,分別表示節點數和邊數,以空格隔開,其中1 n 500,1 m 50000 之後m行,每行3個數u,v,...

51NOD 迷宮遊戲 最短路

你來到乙個迷宮前。該迷宮由若干個房間組成,每個房間都有乙個得分,第一次進入這個房間,你就可以得到這個分數。還有若干雙向道路鏈結這些房間,你沿著這些道路從乙個房間走到另外乙個房間需要一些時間。遊戲規定了你的起點和終點房間,你首要目標是從起點盡快到達終點,在滿足首要目標的前提下,使得你的得分總和盡可能大...

51nod 1443 路徑和樹 單元最短路徑

分析 很容易想到先搞一遍單源最短路徑,然後只保留最短路徑上的邊,接下來容易想到最小生成樹,但是因為有的邊只刪了乙個方向,所以變成了有向圖了,要求的就是最小樹形圖,比較麻煩而且容易t。實際上,考慮在連好的圖裡加乙個點,肯定是加連向它的最短邊,類似貪心的思路,所以結果就是刪完後的圖中,每個點的最小前驅邊...