1231 最優佈線問題 kruskal

2021-08-01 12:39:18 字數 1204 閱讀 7695

題目描述 description

學校需要將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 2

資料範圍及提示 data size & hint

最終答案需要用long long型別來儲存

#include#include#include#define max 100010

using namespace std;

typedef long long ll;

ll n,m,f[max],sum=0;

struct st

edge[max];

void init()

}bool cmp(const st x, const st y)

//查

int find(int x)

return f[x];

}//並

void union_set(int x, int y)

}void kruskal()

//到達n-1條邊就達到目的

else if (k == n-1)

}}int main()

//初始化並查集

init();

sort(edge+1, edge+m+1, cmp);

kruskal();

cout<

1231 最優佈線問題

時間限制 1 s 空間限制 128000 kb 題目等級 silver 題解學校需要將n臺計算機連線起來,不同的2臺計算機之間的連線費用可能是不同的。為了節省費用,我們考慮採用間接資料傳輸結束,就是一台計算機可以間接地通過其他計算機實現和另外一台計算機連線。為了使得任意兩台計算機之間都是連通的 不管...

WikiOI 1231 最優佈線問題

這個問題讓無數人崩潰,而且沒有標程。我來貢獻乙個吧。從網上的標準kruskal 並查集 改的 我不會並查集 include include includeusing namespace std struct self self s 1000001 int a,b,m,n long long z 0 ...

CODEVS 1231最優佈線問題

include include include using namespace std int n,m,aa,bb,cc,cur 0,p 1000100 k 0 long long ans 0 struct nodea 1000100 int cmp struct node aa,struct no...