hrbust 1133 MST (最小生成樹)

2021-07-30 16:06:39 字數 1118 閱讀 5338

mst

time limit: 1000 ms

memory limit: 65536 k

total submit: 316(117 users)

total accepted: 160(110 users)

rating:

special judge: no

description

既然大家都不願意做水題,元帥也很無奈,想了好久也不知道什麼是水題,因為在元帥的眼裡都是水題,他定義的非水題就是他做不出來的題。太囧了,隨便弄個水的mst。

input

測試輸入包含若干測試用例。每個測試用例的第1行給出頂點數目n ( < 100 );隨後的n(n-1)/2行對應村莊間的距離,每行給出一對正整數,分別是兩個頂點的編號,以及此兩村莊間的距離。為簡單起見,村莊從1到n編號。

當n為0時,輸入結束,該用例不被處理。

output

對於每個測試用例,輸出mst的最小路徑總長度。

sample input

3

1 2 1

1 3 2

2 3 4

4

1 2 1

1 3 4

1 4 1

2 3 3

2 4 2

3 4 5

0

sample output

3

5

author

最小生成樹

我們需要知道每次選邊的時候選擇最小的邊

並查集加貪心吧。。///hh練習用一下優先佇列

#include#include#include#includeusing namespace std;

struct coor

};int pre[10003];

priority_queueq;

int find(int x)

int ans=0;

void coin(coor x)

}void init(int n)

}int main()

while(!q.empty())

printf("%d\n",ans);}}

最小生成樹(MST)

在帶權圖中,所有的生成樹中邊權的和最小的那棵 或幾棵 被稱為最小生成樹。幾點注意 求最小生成樹使用kruskal演算法。使用並查集處理節點的集合屬性,初始時所有結點屬於只包含其自身的孤立集合。實現 include include using namespace std define n 101 in...

最小生成樹 MST

1 prim演算法 對點進行貪心操作。適合稠密圖 const int m 1005 int vis m 表示該i點是否被選擇 vis i 0 還未被選擇 int map m m map i j 表示i到j的距離 int dis m 1到i的距離和 void prim cout sum 2 krusk...

最小生成樹MST

最小生成樹是在一張無向連通圖中,找到一棵樹,使得其邊的代價之和最小。注 可能存在多個最小生成樹。以邊為展開,將圖中的最小代價邊嘗試加入集合tree中,並且該邊不能與集合tree中的邊形成環,如此迭代,最終得到的集合tree為mst。因此可以採用並集查的方式實現kruskal演算法 以點為展開,將圖中...