還是暢通工程(HDU 1233)

2022-09-18 05:24:37 字數 1101 閱讀 9372

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

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

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

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

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

3

5huge input, scanf is recommended.

#include #include #include #include #include #include using namespace std;

typedef long long ll;

struct node

s[10005];

bool cmp(struct node x, struct node y)

int pre[1000];

int find(int x)

return x;

}int merge(int x, int y)

return 0;

}int kruskal(int n, int x)

for(int i =0; i < x; i ++)

if(num == n - 1)break;

}return ans;

}int main()

sort(s,s + x, cmp);

int ans = kruskal(n,x);

printf("%d\n",ans);

}return 0;

}

HDU 1233 還是暢通工程

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

hdu 1233 還是暢通工程

這個題我用的貪心和並查集來解決的。kruskal演算法 首先用貪心對長度排序,然後按照長度從小到 擇連線,沒有被聯通的則直接連,要注意乙個問題就是如果4個村莊是1 4聯通了,2 3聯通了,那麼肯定還要讓這兩個集合聯通 用並查集 因此我用了乙個p來表示不同的集合。ac include include ...

hdu 1233 還是暢通工程

傳送門給定n個村子,和每個村子之間的距離,現在要求連線這n個村子的最小距離這題典型的最小生成樹模板題,krusal演算法和prim演算法都可以達到要求 並且這題的資料量不大,並且是完全圖,利用鄰接矩陣做就好 include const int maxn 1e2 2 int g maxn maxn i...