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
0sample output35
**如下:
1 # include2 # include3 # include4 # include5view codeusing
namespace
std;
6const
int n=105;7
const
int inf=1
<<30;8
struct
edge914
};15
intpre[n],n,head[n],cnt;
16 edge e[n*(n-1)+5
];17
void add(int fr,int to,int
w)18
25int fin(int
x)26
31void
kruskal()
3244
}45 printf("
%d\n
",ans);46}
47int
main()
4861
kruskal();62}
63return0;
64 }
模板 最小生成樹 Kruskal
兩種寫法 第一種 使用陣列 時間複雜度 o nlogn includeusing namespace std define max 200000 10 int n,m n 結點的數量 m 邊的數量 int u max v max w max r max p max u i v i 第i條邊的兩端點,...
模板 最小生成樹Kruskal
基本介紹 模板題目 實現 最小生成樹問題一般有兩種解法 prim和kruskal 因為之前學過並查集所以果斷選擇先學後者 kruskal是一種利用並查集來求解最小生成樹的演算法 它將每乙個聯通塊當作乙個集合 先將邊按從小到大的順序排序 現在每乙個點都是孤立的 並且自己成為乙個集合 然後按排好的順序列...
最小生成樹Kruskal演算法模板
利用陣列fa來記錄各個節點的父節點,初始化為自己 通過sort排序,從邊長最短到最長 for 邊長 判斷 如果邊的兩個端點的父節點不相同,可選 把選過的邊的兩端點中,大序號的父節點處理為小序號的父節點 include include using namespace std define n 28 i...