P4779單源最短路徑(標準版)

2022-05-16 11:27:14 字數 907 閱讀 2647

應用的是dijkstra演算法,這種演算法的思想類似於貪心。

首先,將所有點分為已知最短路和未知最短路兩類。開始時,只有出發點的最短路已知,為0,其餘點都標記為正無窮。我們要求出出發點到所有點的最短路徑,因此進行點數輪迴圈,每輪迴圈中,遍歷與已知點間有邊相連的點,更新與出發點的最短路徑。然後從所有更新的路徑值中選出最小值,將對應點加入已知最短路徑類,迴圈操作即可。

還有一點,就是選最小值時,要用堆進行優化,可以將時間複雜度將至o((n+m)log2​n)級別,否則是o方複雜度,妥妥超時。

#include#include

#define maxm 200010

#define maxn 100010

#define inf 2147483647

using

namespace

std;

inthead[maxn],cnt;

intdis[maxn];

intvis[maxn];

struct

edge edge[maxm];

void add(int x,int y,int

z) priority_queue

< pair,vector< pair >,greater< pair > >q;

intmain()

for(int i = 1; i <= n; i++)

dis[i] =inf;

dis[s] = 0

; q.push(make_pair(

0,s));

while(!q.empty()) }}

for(int i = 1; i <= n; i++)

printf(

"%d

",dis[i]);

return0;

}

P4779 模板 單源最短路徑(標準版)

最短路 堆優化 dijkstra 優先佇列 複雜度 o eloge 洛谷4779 題目描述 給定乙個 n 個點,m 條有向邊的帶非負權圖,請你計算從 s 出發,到每個點的距離。資料保證能從 s 出發到任意點 輸入4 6 1 1 2 2 2 3 2 2 4 1 1 3 5 3 4 3 1 4 4 輸出...

P4779 模板 單源最短路徑(標準版)

題目入口 p4779 模板 單源最短路徑 標準版 使用 堆優化dijkstra求最短路 模版 使用模版前言 注意頂點數maxn的值 注意極大資料inf的值 include include include include include include include define maxn 3000...

P4779 模板 單源最短路徑(標準版)

單源最短路徑模板題,沒什麼好說的。然而本題卡普通spfa.昨天某位同學給我說了堆優化spfa.於是就拿來寫這道題,a了 堆優化思想就是把dis小的放在前邊,也許和slf優化差不多?然而感覺上比slf快很多 include include include include includeusing na...