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