問題描述
給定乙個n個頂點,m條邊的有向圖(其中某些邊權可能為負,但保證沒有負環)。請你計算從1號點到其他點的最短路(頂點從1到n編號)。
輸入格式
第一行兩個整數n, m。
接下來的m行,每行有三個整數u, v, l,表示u到v有一條長度為l的邊。
輸出格式
共n-1行,第i行表示1號點到i+1號點的最短路。
樣例輸入
3 31 2 -1
2 3 -1
3 1 2
樣例輸出
-1-2
資料規模與約定
對於10%的資料,n = 2,m = 2。
對於30%的資料,n <= 5,m <= 10。
對於100%的資料,1 <= n <= 20000,1 <= m <= 200000,-10000 <= l <= 10000,保證從任意頂點都能到達其他所有頂點。
我使用的所有陣列都是動態開闢的,可以使用靜態陣列。
#include#include//int 最大值 int_max
#includevoid found();
void ini();
void interdata();
void shortestpath_dij();
void shortestpath_floyd();
void shortestpath_bel();
int n;
long m;
struct
map;
int main()
void found()
//if
}//if
}//for
}//while
for(v=1;v最後的最後,這三種方法均不能解決本題,正確率分別是30%,50%,70%。
錯誤原因都是超時,若改進請參考spfa演算法。
藍橋杯 交換瓶子(三種方法)
有n個瓶子,編號 1 n,放在架子上。比如有5個瓶子 2 1 3 5 4 要求每次拿起2個瓶子,交換它們的位置。經過若干次後,使得瓶子的序號為 1 2 3 4 5 對於這麼簡單的情況,顯然,至少需要交換2次就可以復位。如果瓶子更多呢?你可以通過程式設計來解決。輸入格式為兩行 第一行 乙個正整數n n...
最短路徑的三種實現方法
helpbuptguoan created by new life on 16 8 24.include include include include include include include using namespace std define n 5 圖的大小 const int typ...
三種最短路的總結
三種最短路演算法的對比 floyd dijkstra bellman ford 空間複雜度 o n 2 0 m 0 m 時間嗎複雜度 o n3 o m n logn o mn 適用情況 稠密圖稠密圖 稀疏圖負權邊 不可以不可以 可以floyd演算法簡單,dijkstra不能解決負權邊優化後可以得到m...