最短路模板

2021-09-26 01:09:39 字數 2026 閱讀 4450

#include

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

using

namespace std;

const

int maxn =

105;

int dis[maxn]

, pre[maxn]

;struct edge//邊

;edge

(int uu,

int vv,

int ww):u

(uu),v

(vv),w

(ww);}

;vector edges;

//邊陣列

vector<

int> g[maxn]

;//儲存每個節點對應的邊的序號

void

init

(int nn)

//清理

void

addedge

(int uu,

int vv,

int ww)

//加邊

struct node//優先佇列優化,dis小的先出隊

;node

(int uu,

int dd):u

(uu),d

(dd)

;friend

bool

operator

<

(node a, node b)};

void

dijkstra

(int s)}}

}int

main()

dijkstra(1

);printf

("%d\n"

, dis[n]);

}return0;

}

#include

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

using

namespace std;

intmain()

for(

int i =

0; i < m; i++

)//輸入邊a,b兩點的權值是x

scanf

("%d%d"

,&s,

&t);

for(

int k =

0; k < n; k++

)for

(int i =

0; i < n; i++

)for

(int j =

0; j < n; j++)if

(dis[s]

[t]!= inf)

//可以求任意兩點間最短路

printf

("%d\n"

, dis[s]

[t])

;else

printf

("-1\n");

}return0;

}

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

using

namespace std;

int dis[

105]

,visit[

105]

;int n,m;

class

node};

vectors[

105]

;void

spfa()

}}}int

main()

spfa()

; cout<<}return0;

}

最短路模板

1.dijkstra演算法 演算法思想 從某乙個點開始,找與它距離最近的乙個點,然後更新所有點到這條路徑的距離,然後再次選取乙個距離上乙個點路徑最短的點,將其加入路徑,以此進行,直到求出起點到所有點的最短距離.注意 權值不能為負,如圖 1到3的距離應該是零,但這裡結果為一 1 鄰接矩陣 複雜度 o ...

最短路模板

週六週日tyvj上有模擬賽 順便逃了周練 霧 複習了一下圖論裡的基本演算法 彷彿第一次寫最短路的手生 寫的太少了 orz dijkstra include define maxn 10001 define maxm 300001 using namespace std template void r...

最短路模板

最短路模板 思路 開乙個陣列dis i 一開始把陣列全初始化為極大值,表示離源點的距離為無窮大 表示 i 點到源點的最短距離。一開始把與源點直接相鄰的點和源點的距離存入dis i 陣列,再在dis陣列中找到乙個最小值,並標記。顯然該標記點離源點是最近的。而其他點經過該標記點到源點的距離可能比直接原點...