最小生成樹(prim kruskal)模板

2021-07-04 11:16:33 字數 575 閱讀 1597

prim:

o(v^2),適用於稠密圖

const int n=1000;

const int inf=0x3f3f3f3f;

int a[n][n],p[n],low[n];///鄰接矩陣 

int prim(int n)

}p[poi]=1;

ans+=mi;

for(j=1;j<=n;j++)

if(!p[j])

low[j]=min(low[j],a[poi][j]);

}return ans;

}

kruskal:將邊按權值從小到大排序,列舉每一條邊,若該邊的兩端不在同一集合中,合併集合。直到找到n-1條邊(n為點數)。判斷是否在乙個集合也可以用並查集做

o(eloge)  適用於稀疏圖

const int n=1000;

const int m=n*n;

int p[n];

struct edge

e[m];

int cmp(edge a,edge b)

{    return a.w

最小生成樹MST演算法(Prim Kruskal)

1 概念 乙個有 n 個結點的連通圖 的生成樹是原圖的極小連通子圖,且包含原圖中的所有 n 個結點,並且有保持圖連通的最少的邊,所謂乙個帶權圖的最小生成樹,就是原圖中邊的權值最小的生成樹,所謂最小是指邊的權值之和小於或者等於其它生成樹的邊的權值之和。2 性質 3 應用 例如 要在n個城市之間鋪設光纜...

最小生成樹 次小生成樹

一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 1.兩點之間的路徑是唯一的。2.邊數等於點數減一。3.連線任意兩點都會生成乙個環。對於乙個無向聯通圖g的子圖,如果它包含g的所有點,則它被稱為g的生成樹,而各邊權和最小的生成樹則被稱...

最小生成樹

package 圖 最小生成樹是用最少的邊吧把所有的節點連線起來。於是和圖的深度優先搜素差不多。class stack public void push int key public int pop 檢視棧頂的元素 public int peek public boolean isempty cla...