描述
某省調查鄉村交通狀況,得到的統計表中列出了任意兩村莊間的距離。省**「暢通工程」的目標是使全省任何兩個村莊間都可以實現公路交通(但不一定有直接的公路相連,只要能間接通過公路可達即可),並要求鋪設的公路總長度為最小。請計算最小的公路總長度。
輸入測試輸入包含若干測試用例。每個測試用例的第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 有鄰接表 用於稀疏矩陣 和鄰接矩陣 用於稠密矩陣 下面我給的例項適合用稀疏矩陣。聽了大概...