單源最短路徑

2021-10-11 04:38:11 字數 709 閱讀 5982

請編寫程式求給定正權有向圖的單源最短路徑長度。圖中包含n個頂點,編號為0至n-1,以頂點0作為源點。

輸入第一行為兩個正整數n和e,分別表示圖的頂點數和邊數,其中n不超過20000,e不超過1000。接下來e行表示每條邊的資訊,每行為3個非負整數a、b、c,其中a和b表示該邊的端點編號,c表示權值。各邊並非按端點編號順序排列。

輸出為一行整數,為按頂點編號順序排列的源點0到各頂點的最短路徑長度(不含源點到源點),每個整數後乙個空格。如源點到某頂點無最短路徑,則不輸出該條路徑長度。

4 4

0 1 1

0 3 1

1 3 1

2 0 1

1 1
#includeusing namespace std;

typedef long long int ll;

const int n=20005;

mapa[n];

vectorv(n,int_max);

int n;

int main()

v[0]=0;

queueque;

que.push(0);

vectorvisit(n,0);

while(!que.empty())}}

}for(int i=1;ireturn 0;

}

單源最短路徑

include define max 999 define maxverts 10 typedef struct graph void chushi graph g void dij graph int key,int int int main for i 1 i g.numverts i dij ...

單源最短路徑

最優子結構 最短路徑的子路徑也是最短路徑,動態規劃和貪心演算法的乙個重要指標。環路 一條最短路徑不可能包含環路 1 環路權重為負,如果有一條環路權重為負,則不存在最短路徑 2 環路權重為零,如果包含該環路,則將該環路去掉即可 3 環路權重為正,去掉改環路可以得到更短的路徑,因此不可能是最短路徑 最短...

單源最短路徑

單源最短路徑問題,即在圖中求出給定頂點到其他任一頂點的最短路徑。1.最短路徑的最優子結構性質 該性質描述為 如果p i,j 是從頂點i到j的最短路徑,k和s是這條路徑上的乙個中間頂點,那麼p k,s 必定是從k到s的最短路徑。證明 假設p i,j 是從頂點i到j的最短路徑,則有p i,j p i,k...