#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node
{
ll u, v, w;
}edge[200005];
bool cmp(struct node a, struct node b)
{
return a.w < b.w;
}
bool cmp2(struct node a, struct node b)
{
return a.w > b.w;
}
ll pre[200005];
ll fin(ll x){return pre[x] == x ? x : pre[x] = fin(pre[x]);}
int main()
{
ll n, m, i, j, k;
scanf("%lld %lld", &n, &m);
for(i = 1; i <= m; i++)
{
scanf("%lld %lld %lld", &edge[i].u, &edge[i].v, &edge[i].w);
}
for(i = 1; i <= n; i++)pre[i] = i;
sort(edge + 1,edge + 1 + m, cmp);
ll maxx = 0;
for(i = 1; i <= m; i++)
{
ll xx = fin(edge[i].u);
ll yy = fin(edge[i].v);
if(xx != yy)
{
pre[xx] = yy;
maxx = max(maxx, edge[i].w);
}
}
for(i = 1; i <= n; i++)pre[i] = i;
sort(edge + 1, edge + 1 + m, cmp2);
ll ans = 0;
for(i = 1; i <= m; i++)
{
if(edge[i].w <= maxx)
{
ll xx = fin(edge[i].u);
ll yy = fin(edge[i].v);
if(xx != yy)
{
pre[xx] = yy;
ans += edge[i].w;
}
}
}
printf("%lld\n", ans);
return 0;
}
51Nod 1640 天气晴朗的魔法 (最大生成树&&最小生成树)
猜你喜欢
转载自blog.csdn.net/Miracle_QSH/article/details/82192316
今日推荐
周排行