還是暢通工程 (九度 OJ 1017)

2021-09-12 07:43:53 字數 1122 閱讀 6241

題目描述:

某省調查鄉村交通狀況,得到的統計表中列出了任意兩村莊間的距離。省政

府「暢通工程的目標是使全省任何兩個村莊間都可以實現公路交通(但不一定有

直接的公路相連,只要間接通過公路可達即可),並要求鋪設的公路總長度為最

小。請計算最小的公路總長度。

輸入:

測試輸入包含若干測試用例。每個測試用例的第 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條邊才能全部連通 ...