#include <bits/stdc++.h>
using namespace std;
const int maxn = 66666;
int fa[maxn];
struct edge
{
int from, to, value;
bool operator < (const edge & p)
{
return value < p.value;
}
}edges[maxn];
void init()
{
for(int i = 1; i < maxn; i++)
fa[i] = i;
}
int find(int x)
{
if(x == fa[x])
return x;
return fa[x] = find(fa[x]);
}
int main()
{
int n;
cin >> n;
for(int i = 0; i < n; i++)
cin >> edges[i].from >> edges[i].to >> edges[i].value;
sort(edges, edges + n);
int ans = 0;
for(int i = 0; i < n; i++)
{
int x = find(edges[i].from);
int y = find(edges[i].to);
if(x != y)
{
ans += edges[i].value;
fa[x] = y;
}
}
}
kruskal算法模板
最新推荐文章于 2022-07-18 11:05:21 发布