給出一張包含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 3sample output1 2 6
1 3 4
2 4 2
3 4
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。實際上,考慮在連好的圖裡加乙個點,肯定是加連向它的最短邊,類似貪心的思路,所以結果就是刪完後的圖中,每個點的最小前驅邊...