並查集(最小生成樹)

2021-08-10 23:21:08 字數 1037 閱讀 6228

時間限制: 1000 ms 記憶體限制: 65536 kb

【題目描述】

有一張城市地圖,圖中的頂點為城市,無向邊代表兩個城市間的連通關係,邊上的權為在這兩個城市之間修建高速公路的造價,研究後發現,這個地圖有乙個特點,即任一對城市都是連通的。現在的問題是,要修建若干高速公路把所有城市聯絡起來,問如何設計可使得工程的總造價最少?

【輸入】

n(城市數,1<=n<=100)

e(邊數)

以下e行,每行3個數i,j,wij,表示在城市i,j之間修建高速公路的造價。

【輸出】

n-1行,每行為兩個城市的序號,表明這兩個城市間建一條高速公路。

【輸入樣例】

5 8

1 2 2

2 5 9

5 4 7

4 1 10

1 3 12

4 3 6

5 3 3

2 3 8

【輸出樣例】

1 2

2 3

3 4

3 5獻上標程:

#include#include#include#includeusing namespace std;

struct sdmp[1000],num[1000];

int n,m,x[1000],ans=0,numm=0;

bool cmp1(sd aa,sd bb)

sort(num+1,num+1+numm,cmp1);

for(int i=1;i<=numm;++i)

//printf("%d",ans);}/*

5 81 2 2

2 5 9

5 4 7

4 1 10

1 3 12

4 3 6

5 3 3

2 3 8

*/

函式中father的作用就是找出當前點是否連在了一起(找出他們的終極老父親),如果他們終極老父親不同,就把它們並在一起形成乙個新的集合,擁有乙個共同的(終極老父親)。

認真理解!!!

最小生成樹 並查集練習

叢林中的路 熱帶島嶼lagrishan的首領現在面臨乙個問題 幾年前,一批外援資金被用於維護村落之間的道路,但日益繁茂的叢林無情的侵蝕著村民的道路,導致道路維修開銷巨大,長老會不得不放棄部分道路的維護。已經知道了每條路每個月的維修費用 單位為aacms 現在長老會需要提出一種方案,即需要保證村落之間...

並查集 最小生成樹(prim kruskal)

並查集,從名字上來看可以知道,是乙個集合,而且這個集合可以合併和查詢。查詢,主要是查詢集合中的某乙個元素的祖先是誰,某一些元素是不是擁有相同的祖先。合併,是把兩個不想交的集合合併為乙個集合。並查集的思想就是朋友的朋友就是朋友 雖然現實生活中並不是這樣 並查集的第一步初始化,自己是自己的祖先。乙個人來...

最小生成樹 kruskal 並查集

題目描述 如題,給出乙個無向圖,求出最小生成樹,如果該圖不連通,則輸出orz 輸入輸出格式 輸入格式 第一行包含兩個整數n m,表示該圖共有n個結點和m條無向邊。n 5000,m 200000 接下來m行每行包含三個整數xi yi zi,表示有一條長度為zi的無向邊連線結點xi yi 輸出格式 輸出...