題目:有n個村莊,編號從1到n,建造一些道路使每兩個村莊可以相互連線。 我們說兩個村a和b是相連的,當且僅當a和b之間有一條道路,或者存在乙個村c以便在a和c之間有一條道路,並且c和b相連。一些村莊之間已經有一些道路,你的工作就是修建一些道路,使所有村莊都連通起來,所有道路的長度都是最小的。求此時需要修多長的路。
#include
using namespace std;
int f[
200]
;struct edge
e[200
*200];
bool cmp
(edge a,edge b)
intgetf
(int n)
bool merge1
(int u,
int v)
intmain()
;}}int c;
cin>>c;
for(
int i=
0; i}//將每條邊按從小到大的順序排序
sort
(e,e+cnt,cmp)
;//並查集初始化
for(
int i=
1; i<=n; i++
) f[i]
=i;int cc=0;
int sum=0;
for(
int i=
0; i)//cc用來記錄已經選了多少條邊了 如果選的邊數量為n-1條邊
//就選夠了 可以退出 不用選了
if(cc==n-1)
break;}
cout<}}
題目:依舊是權值和最小
for
(int i=
1; i}}
題目:權值和最小,兩個點可不可以連在一起需要判斷,兩個點之間的權值需要計算。
bool sushu
(int n)
return1;
}
2013寒假ACM集訓 最小生成樹
普里姆演算法 稠密圖 克魯斯卡爾演算法 稀疏圖 1.prime 演算法 貪心 集合加點 2.kruskal演算法 並查集 加邊 思想是加 點,在邊比較多的情況下,用prime。思路 先找 任意一點到其他的點的 最短距離,再找 這個點和剛才的點 到其他的點的最短距離,依次重複 最小生成樹 prime模...
最小生成樹 次小生成樹
一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 1.兩點之間的路徑是唯一的。2.邊數等於點數減一。3.連線任意兩點都會生成乙個環。對於乙個無向聯通圖g的子圖,如果它包含g的所有點,則它被稱為g的生成樹,而各邊權和最小的生成樹則被稱...
最小生成樹
package 圖 最小生成樹是用最少的邊吧把所有的節點連線起來。於是和圖的深度優先搜素差不多。class stack public void push int key public int pop 檢視棧頂的元素 public int peek public boolean isempty cla...