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#includeview code#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;
}
Kruskal 繼續暢通工程
description 省 暢通工程 的目標是使全省任何兩個村莊間都可以實現公路交通 但不一定有直接的公路相連,只要能間接通過公路可達即可 現得到城鎮道路統計表,表中列出了任意兩城鎮間修建道路的費用,以及該道路是否已經修通的狀態。現請你編寫程式,計算出全省暢通需要的最低成本。input 測試輸入包含...
還是暢通工程
submit status description input output sample input sample output hint description 某省調查鄉村交通狀況,得到的統計表中列出了任意兩村莊間的距離。省 暢通工程 的目標是使全省任何兩個村莊間都可以實現公路交通 但不一定有...
還是暢通工程
problem description 某省調查鄉村交通狀況,得到的統計表中列出了任意兩村莊間的距離。省 暢通工程 的目標是使全省任何兩個村莊間都可以實現公路交通 但不一定有直接的公路相連,只要能間接通過公路可達即可 並要求鋪設的公路總長度為最小。請計算最小的公路總長度。input 測試輸入包含若干...