Kruskal 還是暢通工程

2022-05-03 05:24:09 字數 1100 閱讀 4345

description

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

input

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

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

output

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

sample input

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 sample output35

大意:讓你求出所有連線起來的最小的路程。

kruscal演算法:考慮的是邊,與prim演算法不同,prim考慮的是定點,所以對於稠密圖來說用prim演算法,對於稀疏的就用kruscal演算法。kruscal演算法分兩步,第一步是將所有的路程從小到大進行排序,利用乙個結構體,第二部是利用乙個for迴圈,判斷父節點是否是同乙個如果不是那麼加起來。kruscal用並查集思想優化,方便許多,並查集就是用乙個陣列來儲存父節點,不管從**到**,只記錄關係,即p陣列和find函式。

#include#include

#include

using

namespace

std;

const

int max = 5000

;struct

edgea[max];

bool

cmp(edge a,edge b)

intp[max];

int find(intx)

intmain()

}printf(

"%d\n

",sum);

}return0;

}

view code

Kruskal 繼續暢通工程

description 省 暢通工程 的目標是使全省任何兩個村莊間都可以實現公路交通 但不一定有直接的公路相連,只要能間接通過公路可達即可 現得到城鎮道路統計表,表中列出了任意兩城鎮間修建道路的費用,以及該道路是否已經修通的狀態。現請你編寫程式,計算出全省暢通需要的最低成本。input 測試輸入包含...

還是暢通工程

submit status description input output sample input sample output hint description 某省調查鄉村交通狀況,得到的統計表中列出了任意兩村莊間的距離。省 暢通工程 的目標是使全省任何兩個村莊間都可以實現公路交通 但不一定有...

還是暢通工程

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