貪心演算法完成最小生成樹kruskal之暢通工程

2022-03-22 18:41:03 字數 846 閱讀 2781

描述

某省調查鄉村交通狀況,得到的統計表中列出了任意兩村莊間的距離。省**「暢通工程」的目標是使全省任何兩個村莊間都可以實現公路交通(但不一定有直接的公路相連,只要能間接通過公路可達即可),並要求鋪設的公路總長度為最小。請計算最小的公路總長度。

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

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

輸出對每個測試用例,在1行裡輸出最小的公路總長度。

樣例輸入

31 2 1

1 3 2

2 3 4

41 2 1

1 3 4

1 4 1

2 3 3

2 4 2

3 4 5

0樣例輸出35

**如下:

#include#include#include#includeusing namespace std;

int f[1005],ans;

struct node

a[10005];

bool cmp(node n,node m)

int find (int n)

int merge(node k)

return 0;

}int main()

sort(a+1,a+1+m,cmp);

ans=0;

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

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

}return 0;

}

貪心演算法 最小生成樹 Prim演算法

乙個無向帶權圖g v,e 其中n個頂點vertex,以及連線各個頂點之間的邊edge,可能有些頂點之間沒有邊,每條邊上的權值都是非負值。生成樹 g的乙個子圖,包含了所有的vertex,和部分的edge。最小生成樹 所有的生成樹中,各條edge上的權值總和最小的乙個。例子 設計通訊網路時,各個城市之間...

貪心演算法 最小生成樹 Kruskal演算法

關於最小生成樹的概念,請參考前一篇文章 prim演算法。kruskal演算法 不停地迴圈,每一次都尋找兩個頂點,這兩個頂點不在同乙個真子集裡,且邊上的權值最小。把找到的這兩個頂點聯合起來。初始時,每個頂點各自屬於自己的子集合,共n個子集合。每一步操作,都會將兩個子集合融合成乙個,進而減少乙個子集合。...

貪心演算法之Prim最小生成樹

滿足貪心演算法的條件是都滿足動態規劃的,只是貪心演算法的條件更強,不僅前乙個步驟的解可以用到後一步,而且前一步的解是子問題的最優解,最後能夠得到全域性的最優解。prim演算法是乙個求最小生成樹的演算法。表示圖g 有鄰接表 用於稀疏矩陣 和鄰接矩陣 用於稠密矩陣 下面我給的例項適合用稀疏矩陣。聽了大概...