堆優化的單源最段路

2021-09-12 08:00:20 字數 1290 閱讀 2668

堆優化的單源最段路

例題洛谷模版題p4779題

/*

* author : columbine1999(baofat)

* date : 2019-02-08 09:52:27

* projextname : p4779 堆優化的單源最短路

* version : v-version

* path : tm_directory

* * descirption :提高 不用pair的堆優化單源最短路

*/#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

const

int maxn =

1e6+1;

const

int maxm =

2e6+2;

const

int inf =

0x3f3f3f3f

;//鏈式前向星儲存邊

struct edgeedge[maxm]

;int head[maxn]

, tot, n, m, s;

//n,m為頂點數邊數

int dist[maxn]

, vis[maxn]

;//因為要用到堆優化所以需要設乙個node結構體,需要有《運算子來建立priority_queue

//pos表示要到達的頂點,w表示到達定點的距離

struct node};

priority_queue q;

inline

void

add_edge

(int u,

int v,

int w)

//堆優化dijkstra

void

dijkstra

(int start));

while

(!q.

empty()

));}

}}}int

main()

dijkstra

(s);

for(

int i =

1;i<=n;i++

) cout<<<

" ";

//cout<< "hello world";

return0;

}

Dijkstra演算法 單源最短路 堆優化

每次找到離源點最近的乙個頂點,然後以該頂點為中心向下擴充套件,最終得到源點到其餘所有點的最短路徑。說明 dis陣列儲存離源點的所有點的最短路徑,比如源點是1,dis 2 3,表示頂點2離源點的最短路徑為2 執行步驟 1.將所有點的頂點分為兩部分 已知最短路徑集合p和未知最短路徑的集合q。最開始,已知...

Dijkstra演算法詳解 單源最短路 堆優化

用途 用於求圖中指定兩點之間的最短路徑,或者是指定一點到其它所有點之間的最短路徑。實質上是貪心演算法。基本思想 1.將圖上的初始點看作乙個集合s,其它點看作另乙個集合 2.根據初始點,求出其它點到初始點的距離d i 若相鄰,則d i 為邊權值 若不相鄰,則d i 為無限大 3.選取最小的d i 記為...

單源最短路之 優化的Bellman Ford演算法

include using namespace std const double max 1000000.0 typedef struct edge edge e 201 int n 貨幣種數 int m 銀行總數 int s 初始貨幣型別 double v 初始財產 double d 101 源點...