題目描述:
某省調查鄉村交通狀況,得到的統計表中列出了任意兩村莊間的距離。省政
府「暢通工程的目標是使全省任何兩個村莊間都可以實現公路交通(但不一定有
直接的公路相連,只要間接通過公路可達即可),並要求鋪設的公路總長度為最
小。請計算最小的公路總長度。
輸入:
測試輸入包含若干測試用例。每個測試用例的第 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 32 4 2
3 4 5
0樣例輸出:
2006 年浙江大學計算機及軟體工程研究生機試真題
#include
#include
#define n 100
#define m n*(n-1)/2
using
namespace std;
int tree[n]
;int sum[n]
;struct edgeedge[m]
;int
findroot
(int x)
}int
cmp(edge a,edge b)
intmain()
for(
int i=
0;i)sort
(edge,edge+m,cmp)
;for
(int i=
0;ifor(
int i=
0;i}return0;
}
還是暢通工程 九度 OJ 1017
在給定的道路中選取一些,使所有的城市直接或間接連通且使道路的總長度最小,該例即為典型的最小生成樹問題。將城市抽象成圖上的結點,將道路抽象成連線點的邊,其長度即為邊的權值。經過這樣的抽象,求得該圖的最小生成樹,其上所有的邊權和即為所求。最小生成樹kruskal演算法按如下步驟求解最小生成樹 1.初始時...
九度 1012 暢通工程
題目描述 某省調查城鎮交通狀況,得到現有城鎮道路統計表,表中列出了每條道路直接連通的城鎮。省 暢通工程 的目標是使全省任何兩個城鎮間都可以實現交通 但不一定有直接的道路相連,只要互相間接通過道路可達即可 問最少還需要建設多少條道路?輸入測試輸入包含若干測試用例。每個測試用例的第1行給出兩個正整數,分...
九度 題目1012 暢通工程
這題我是以連通域來做的,n個點至少需要n 1個邊才能連通。如果形成迴路,則相當於有這條邊浪費了,沒有任何價值。最終至少還需要多少邊才能把所有的城鎮聯通,也就是求剩下的孤立的點和連通域之間還需要幾條邊才能連通!比如 最後利用程式求得3個連通域和2個孤立的點,那麼至少需要3 2 1 5條邊才能全部連通 ...