HDOJ 1233 還是暢通工程 最小生成樹

2022-09-14 00:21:32 字數 1159 閱讀 9945

time limit: 4000/2000 ms (j**a/others)    memory limit: 65536/32768 k (j**a/others)

total submission(s): 33106    accepted submission(s): 14936

problem description

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

input

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

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

output

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

sample input

3

1 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 output

3

5hint

hint

huge input, scanf is recommended.

source

浙大計算機研究生複試上機考試-2023年

#include#include#include#include#define max 5005

int pa[max];

int m,n;

using namespace std;

struct edge

;edge edges[max];

bool cmp(edge x,edge y)

int dfs(int x)

int kruskal()

}return ans;

}int main()

}

HDOJ 1233 還是暢通工程

題目傳送 hdoj 1233 解題思路 kruskal演算法,利用kruskal演算法獲得最小生成樹,即可求得答案。資料結構 記錄下起始座標,結束座標,兩點距離和該路是否被選中這四個資訊。view code struct edge 過程 1 讀取所有路徑資訊,儲存在上述資料結構的陣列中 2 快速排序...

HDU 1233 還是暢通工程

題意 有1 n個村莊,村莊與村莊之間要鋪設公路,在使任意兩個村莊都能相互到達的前提下使修路的花費最少 解題思路 這題是典型的最小生成樹的題,可以選擇prim演算法或者kruskal演算法。prim使用與稀疏圖,二此題中的邊有n n 1 2條,因此最好是用kruskal演算法。kruskal演算法的思...

杭電 1233 還是暢通工程

基礎的最小生成樹題目 可以拿來練習一下prim演算法和kruskal演算法的運用 prim include include using namespace std int main for int i 1 i n i int t n n 1 2 while t int sum 0 dis 1 0 w...