時間限制: 1 s
空間限制: 128000 kb
題目等級 : ** silver
學校需要將n臺計算機連線起來,不同的2臺計算機之間的連線費用可能是不同的。為了節省費用,我們考慮採用間接資料傳輸結束,就是一台計算機可以間接地通過其他計算機實現和另外一台計算機連線。
為了使得任意兩台計算機之間都是連通的(不管是直接還是間接的),需要在若干臺計算機之間用網線直接連線,現在想使得總的連線費用最省,讓你程式設計計算這個最小的費用。
輸入描述 input description
輸入第一行為兩個整數n,m(2<=n<=100000,2<=m<=100000),表示計算機總數,和可以互相建立連線的連線個數。接下來m行,每行三個整數a,b,c 表示在機器a和機器b之間建立連線的話費是c。(題目保證一定存在可行的連通方案, 資料中可能存在權值不一樣的重邊,但是保證沒有自環)
輸出描述 output description
輸出只有一行乙個整數,表示最省的總連線費用。
樣例輸入 sample input
3 31 2 1
1 3 2
2 3 1
樣例輸出 sample output
資料範圍及提示 data size & hint
最終答案需要用long long型別來儲存
這道題用kruskal演算法解決,kruskal演算法能在eloge的時間內構造邊數為e的最小生成樹。(複雜度主要受排序演算法限制,此處用的是sort)
演算法思想如下:
1.將邊按權公升序排列;
2.按順序將邊所確定的點加入乙個連通分量,直至所有點在同乙個連通分量中
**如下:
#include
#include
#include
#define ll long long
using namespace std;
int _()
return ans;
}struct pe[105005];
ll fa[105005],n,m,ans;
int getfa(int x)
bool com(p a,p b) //公升序排列
void k()
int main()
最小生成樹 最優佈線問題
題目描述 學校有n臺計算機,為了方便資料傳輸,現要將它們用資料線連線起來。兩台計算機被連線是指它們之間有資料線連線。由於計算機所處的位置不同,因此不同的兩台計算機的連線費用往往是不同的。當然,如果將任意兩台計算機都用資料線連線,費用將是相當龐大的。為了節省費用,我們採用資料的間接傳輸手段,即一台計算...
最優佈線問題(最小生成樹)
description 學校有n臺計算機,為了方便資料傳輸,現要將它們用資料線連線起來。兩台計算機被連線是指它們之間有資料線連線。由於計算機所處的位置不同,因此不同的兩台計算機的連線費用往往是不同的。當然,如果將任意兩台計算機都用資料線連線,費用將是相當龐大的。為了節省費用,我們採用資料的間接傳輸手...
複習 最小生成樹 最優佈線問題
題目描述 學校有 n 臺計算機,為了方便資料傳輸,現要將它們用資料線連線起來。兩台計算機被連線是指它們間有資料線連線。由於計算機所處的位置不同,因此不同的兩台計算機的連線費用往往是不同的。當然,如果將任意兩台計算機都用資料線連線,費用將是相當龐大的。為了節省費用,我們採用資料的間接傳輸手段,即一台計...