單源最短路徑 模板 dijkstra

2021-10-09 04:52:05 字數 2044 閱讀 6714

p4779 【模板】單源最短路徑(標準版)原題鏈結

鏈式前向星

題目描述

給定乙個 n個點,m條有向邊的帶非負權圖,請你計算從 s 出發,到每個點的距離。 資料保證你能從 s 出發到任意點。

輸入格式

第一行為三個正整數 n, m, s。 第二行起 m 行,每行三個非負整數 ui, vi, wi表示從ui到 vi​有一條權值為wi的有向邊。

輸出格式

輸出一行 nn 個空格分隔的非負整數,表示 ss 到每個點的距離。

輸入輸出樣例

輸入 46

1122

2322

4113

5343

144輸出 02

43

/**

**最短路的dijkstra演算法

**堆優化

**/#include

using

namespace std;

typedef

long

long ll;

const ll maxn =

1000005

;const ll inf =

0x7fffffff

;struct edge e[maxn]

;int head[maxn]

, vis[maxn]

;int cnt;

void

add(

int u,

int v,

int w)

struct node

bool

operator

<

(const node& x)

const};

int dis[maxn]

;void

dijkstra

(int n,

int s)}}

}int

main()

dijkstra

(n, s)

;for

(int i =

1; i <= n; i++

)cout << dis[i]

<<

" ";

return0;

}/*注這裡的**

typedef pairpii;

priority_queue,greater> q;

等同於struct heapnode

};紫書p361上有說明

*/

——————————————————————分割線

hdu2544最短路原題鏈結

使用鄰接表+優先佇列

#include

using

namespace std;

typedef

long

long ll;

const ll maxn =

1e3+5;

const ll inf =

0x7fffffff

;struct edge };

vectore[maxn]

;struct node

bool

operator

<

(const node& x)

const};

int n, m;

void

dijkstra()

int s =1;

dis[s]=0

; priority_queueq;

q.push

(node);

while

(!q.

empty()

)}} cout << dis[n]

<<

"\n";}

intmain()

dijkstra()

;}return0;

}

模板 單源最短路徑

如題,給出乙個有向圖,請輸出從某一點出發到所有點的最短路徑長度。輸入格式 第一行包含三個整數n m s,分別表示點的個數 有向邊的個數 出發點的編號。接下來m行每行包含三個整數fi gi wi,分別表示第i條有向邊的出發點 目標點和長度。輸出格式 一行,包含n個用空格分隔的整數,其中第i個整數表示從...

單源最短路徑

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 環路權重為正,去掉改環路可以得到更短的路徑,因此不可能是最短路徑 最短...