prim演算法,o(v^2),適用於稠密圖。
1primconst
int n=1000;2
const
int inf=0x3f3f3f3f;3
int a[n][n],p[n],low[n];///
鄰接矩陣
4int prim(intn)5
21}22 p[poi]=1
;23 ans+=mi;
24for(j=1;j<=n;j++)
25if(!p[j])
26 low[j]=min(low[j],a[poi][j]);27}
28return
ans;
29 }
kruskal,o(eloge)。將邊按權值從小到大排序,列舉每一條邊,若該邊的兩端不在同一集合中,合併集合。直到找到n-1條邊(n為點數)。判斷是否在乙個集合也可以用並查集做。
1kruskal////o(eloge) 適用於稀疏圖
2const
int n=1000;3
const
int m=n*n;
4int
p[n];
5struct
edge
6e[m];
9int
cmp(edge a,edge b)
1013
int kruskal(int n,int
m)1432}
33return
ans;
34 }
最小生成樹模板
prim演算法理解可以參考部落格 prim演算法模板 int prime int v int i,j,sum 0,min,k sum是權重和 for i 1 i n i lowcost i 表明當前狀態下在u內距離v點 s中各點 距離的最小值,每個u中點s 中點 都計算 lowcost i map ...
最小生成樹 模板
const int maxn 1010 const int maxm 200020 struct edge edges maxm int father maxn int find int x int cmp edge a,edge b 將邊按權值排序 int kruskal int n,int m ...
模板 最小生成樹
題目描述 如題,給出乙個無向圖,求出最小生成樹,如果該圖不連通,則輸出orz 輸入輸出格式 輸入格式 第一行包含兩個整數n m,表示該圖共有n個結點和m條無向邊。n 5000,m 200000 接下來m行每行包含三個整數xi yi zi,表示有一條長度為zi的無向邊連線結點xi yi 輸出格式 輸出...