2013寒假ACM集訓 最小生成樹

2022-04-14 16:32:02 字數 1431 閱讀 5473

普里姆演算法(稠密圖)     克魯斯卡爾演算法(稀疏圖)

1.prime 演算法

貪心 集合加點

2. kruskal演算法

並查集 加邊

思想是加 點,在邊比較多的情況下,用prime。

思路:先找 任意一點到其他的點的 最短距離,再找 這個點和剛才的點 到其他的點的最短距離,依次重複

最小生成樹(prime模版)

1 #include2

int grah[100][100];3

int sum=0;4

void pim(intn)5

,d[100];8

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

9 d[i]=grah[1][i];// 初始

d代表1到i的值

10 v[1]=1;11

for(i=2;i<=n;i++)

12//

找乙個距離最小的點18}

19 sum+=min;

20 v[pos]=1;//

標記已訪問

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

2228}29

}3031}

32int

main()

3350

pim(n);

51 printf("

%d\n

",sum);

52 sum=0;53

}54return0;

55 }

/*hdu hdu 1233 還是暢通工程

最小生成樹(kruskal模版)

view code

1 #include 2 #include 

3 #include 4

int bin[101

],sum,num;

5struct

node

6p[10000

];11

int cmp(const

void *a,const

void *b)

1215

int find(int

x)16

26return

x;27}28

void merge(int x,int y,int

w)2938}

39int

main()

4052 qsort(p,n*(n-1)/2,sizeof(p[0

]),cmp);

53for(i = 0;i <= n*(n-1)/2-1;i ++)

5458 printf("

%d\n

",sum);59}

60return0;

61 }

ACM寒假集訓第七天 最小生成樹

乙個有 n 個結點的連通圖的生成樹是原圖的極小連通子圖,且包含原圖中的所有 n 個結點,並且有保持圖連通的最少的邊。1 最小生成樹可以用kruskal 克魯斯卡爾 演算法或prim 普里姆 演算法求出。prim在稠密圖中比kruskal優,在稀疏圖中比kruskal劣。kruskal include...

ACM寒假集訓

出自 南昌理工學院acm集訓隊 什麼是dfs?void dfs 狀態 a 1.判斷狀態是否合法。合法繼續執行,否則則回到上次呼叫 2.先下走一層,也就是呼叫dfs a void dfs 引數用來表示狀態 if 越界或者是不合法狀態 return if 特殊狀態 剪枝 return for 擴充套件方...

ACM寒假集訓 6

貪心演算法 又稱貪婪演算法 是指,在對問題求解時,總是做出在當前看來是最好的選擇。貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,也就是說,不從整體最優上加以考慮,演算法得到的是在某種意義上的區域性最優解。貪心演算法一般按如下步驟進行 建立數學模型來描述問題。把求解的問題分成若干個...