prim:對點
int min,minindex;
int sum=0;
//記錄最後的答案
for(
int i =
1; i <= n; i++)}
for(
int i =
0; i < m; i++
)// for (int i = 1; i <= n; i++)
// coutfor(
int i =
1; i <= n; i++
) dis[i]
= map[start]
[i];
book[start]=1
;//for(
int i =
1; i <= n; i++)}
book[minindex]=1
; sum +
= dis[minindex]
;for
(int j =
1; j <= n ; j++)}
for(
int j =
1; j <= n; j++)}
}
kruskal:對邊
void
kruskal()
}}
poj1258
#include
#include
using
namespace std;
int mp[
105]
[105
],fa[
200500];
struct edgee[
200500];
int n;
intfind
(int x)
void
join
(int x,
int y)
}bool
cmp(edge x,edge y)
intmain()
}for
(int i=
1;i<=n;i++
)sort
(e+1
,e+tot,cmp)
; tot--
;//cout<<" t"} cout<}return0;
}
poj2377
最大生成樹+
特判最後無法聯通的情況
#include
#include
using
namespace std;
int mp[
105]
[105
],fa[
200500];
struct edgee[
200500];
int n,m;
intfind
(int x)
void
join
(int x,
int y)
}bool
cmp(edge x,edge y)
intmain()
for(
int i=
1;i<=n;i++
)sort
(e,e+m,cmp)
;//cout<<" t"}int cnt=
0,flag=1;
for(
int i=
1;i<=n;i++)}
if(flag) cout
}
poj2395
板子題記錄最小生成樹內的最大路
#include
#include
using
namespace std;
int fa[
20500];
struct edgee[
20500];
int n,m;
intfind
(int x)
void
join
(int x,
int y)
}bool
cmp(edge x,edge y)
intmain()
for(
int i=
1;i<=n;i++
)sort
(e,e+m,cmp)
;//cout<<" t"} cout
}
aoj2224
這題有點神奇,猜出的結論。。
給一張連通圖,要去掉最少的邊使得剩下的圖 圍成的圍欄 都不是封閉的
對這個圖跑最大生成樹,剩下的邊加起來就是答案
#include
#include
using
namespace std;
int fa[
10500];
struct pilep[
10005];
struct edgee[
20500];
int n,m;
intfind
(int x)
void
join
(int x,
int y)
}bool
cmp(edge x,edge y)
intmain()
for(
int i=
0;i)for
(int i=
1;i<=n;i++
)sort
(e,e+m,cmp)
;//cout<<" t"(int i=
0;idouble sum=0;
for(
int i=
0;iprintf
("%.3f"
,sum)
;return0;
}
最小生成樹解題思路
最小生成樹 乙個有 n 個結點的連通圖的生成樹是原圖的極小連通子圖,且包含原圖中的所有 n 個結點,並且有保持圖連通的最少的邊。最小生成樹可 以用kruskal 克魯斯卡爾 演算法或prim 普里姆 演算法求出。思路 1.審題,把題目要求的邊都篩選出來 2.對邊排序 3.用並查集連邊 4.判斷有幾根...
藍書3 1 最小生成樹
t1 井 luogu 1550 題目大意 n個點 需要給每個點供水 在給第i個點供水需要花費v i 連線i號點和j號點 p ij 求給所有點供水的最小代價 思路 建立乙個新節點 對所有點連線v i 邊權的長度 然後跑kruskal 1 include2 include3 include4 inclu...
最小生成樹 次小生成樹
一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 1.兩點之間的路徑是唯一的。2.邊數等於點數減一。3.連線任意兩點都會生成乙個環。對於乙個無向聯通圖g的子圖,如果它包含g的所有點,則它被稱為g的生成樹,而各邊權和最小的生成樹則被稱...