小鎮改造 最小生成樹 Kruskal演算法

2021-08-19 19:09:56 字數 954 閱讀 4504

乙個小鎮需要改造下水道系統,鎮中的下水道系統有多個樞紐,這些樞紐之間通過下水道管道相連線,每兩個樞紐之間最多只有乙個管道, 每條管道都有乙個分值,分值越低,代表管道使用率更高。因為經費有限,小鎮只能改造盡可能少的管道,但是,改造的這些管道應當能夠 直接或間接地把所有的樞紐連線起來。 請你為小鎮設計乙個方案,改造盡可能少的管道,同時在保證盡可能少的情況下,使改造的管道擁有最優的價值,即總分盡可能的低,確保更高的使用價值。 

輸入

第一行有兩個整數n,m,表示n個下水道樞紐,m條管道。接下來m行是對每條管道的描述,q,w,e。表示樞紐q和w之間有管道相連,對應分值為e 

輸出

輸出你設計的方案中分值最高的那條管道的分值

- 第1組

輸入:

451

2314

5247

2363

48

輸出:

6**:#include#include#includeusing namespace std; #define max 10000 typedef struct edge; edge e[max]; int root[max]; int hight[max]; void init(int n) } int find(int x) else } void unite(int x, int y) else } } int compare(const edge &a,const edge &b) void kruskal(int m) } maxw = temp.top(); cout << maxw; } int main() init(n); kruskal(m); }

soj 3366 複習最小生成樹kruskal

題目大意 要建井,每個地方都要有,可以選擇直接在這裡挖井,也可以選擇從其他地方已經有井的地方建一條路到這個地方來。有一段時間沒有寫過最小生成樹了,感覺都有一點快要忘記了的感覺。這道題之前沒有過,借鑑了一下別人的思想。發現真的好簡單。而且這種方法在以前使用過,這回居然沒有想出來,要反思一下了。感覺跟之...

最小生成樹演算法 Prim演算法和Kruskal演算法

prim演算法理解,可以看這篇文章 其實就是每次從當前樹中外選取乙個離樹最近且不構成環的點,同時sum記錄權值,然後把這個點加入樹中,直到所有節點都被訪問過,最小生成樹生成成功,輸出最小生成樹的權值和。下面是prim演算法的板子,和最短路有點相似,也稱為 加點法 最小生成樹prim演算法 inclu...

最小生成樹 次小生成樹

一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 1.兩點之間的路徑是唯一的。2.邊數等於點數減一。3.連線任意兩點都會生成乙個環。對於乙個無向聯通圖g的子圖,如果它包含g的所有點,則它被稱為g的生成樹,而各邊權和最小的生成樹則被稱...