演算法篇 ALGO 5 最短路

2021-10-09 04:20:43 字數 1252 閱讀 5641

時間限制:1.0s 記憶體限制:256.0mb

給定乙個n個頂點,m條邊的有向圖(其中某些邊權可能為負,但保證沒有負環)。請你計算從1號點到其他點的最短路(頂點從1到n編號)。

第一行兩個整數n, m。

接下來的m行,每行有三個整數u, v, l,表示u到v有一條長度為l的邊。

共n-1行,第i行表示1號點到i+1號點的最短路。

3 3

1 2 -1

2 3 -1

3 1 2

-2

對於10%的資料,n = 2,m = 2。

對於30%的資料,n <= 5,m <= 10。

對於100%的資料,1 <= n <= 20000,1 <= m <= 200000,-10000 <= l <=

10000,保證從任意頂點都能到達其他所有頂點。

dijkstra演算法無法判斷含負權邊的圖的最短路,floyd演算法時間複雜度為o(n³),故均不考慮。這裡用bellman-ford演算法,它能在存在負權邊的情況下解決單源點最短路徑問題。

#include

using

namespace std;

#define up(i,a,b) for(int i = a; i <= b; i++)

#define ms(a,x) memset(a,x,sizeof(a))

const

int inf =

0x3f3f3f3f

;const

int maxn =

200001

;int u[maxn]

,v[maxn]

,w[maxn]

;int d[maxn]

;//記錄起點1到各點的最短距離

intmain()

up(i,

1,n-1)

}if(!flag)

break

;//若不再更新最短路,提前退出迴圈}up

(i,2

,n)return0;

}

藍橋杯 ALGO 5 最短路

演算法訓練 最短路 時間限制 1.0s 記憶體限制 256.0mb 問題描述 給定乙個n個頂點,m條邊的有向圖 其中某些邊權可能為負,但保證沒有負環 請你計算從1號點到其他點的最短路 頂點從1到n編號 輸入格式 第一行兩個整數n,m。接下來的m行,每行有三個整數u,v,l,表示u到v有一條長度為l的...

藍橋杯 ALGO 5 最短路

給定乙個n個頂點,m條邊的有向圖 其中某些邊權可能為負,但保證沒有負環 請你計算從1號點到其他點的最短路 頂點從1到n編號 第一行兩個整數n,m。接下來的m行,每行有三個整數u,v,l,表示u到v有一條長度為l的邊。1 n 20000,1 m 200000,10000 l 10000 保證從任意頂點...

藍橋杯 ALGO 5最短路

問題描述 給定乙個n個頂點,m條邊的有向圖 其中某些邊權可能為負,但保證沒有負環 請你計算從1號點到其他點的最短路 頂點從1到n編號 輸入格式 第一行兩個整數n,m。接下來的m行,每行有三個整數u,v,l,表示u到v有一條長度為l的邊。輸出格式 共n 1行,第i行表示1號點到i 1號點的最短路。樣例...