版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_42369449/article/details/83048166
luogu 3366
模板如下:
#include <bits/stdc++.h>
#define ll long long
#define N 200005
using namespace std;
int fa[N];
struct node
{
int l,r,val;
}a[N];
int findf(int x)
{
if(x==fa[x]) return x;
return fa[x]=findf(fa[x]);
}
int cmp(node x,node y)
{
return x.val<y.val;
}
int ans;//判断联通性
int sum;
int n,m;
void Kruskal()
{
for(int i = 1;i <= m;i++)
{
int t1=findf(a[i].l);
int t2=findf(a[i].r);
if(t1!=t2)
{
ans++;
sum+=a[i].val;
fa[t1]=t2;
}
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i = 1;i <= n;i++)
{
fa[i]=i;
}
for(int i = 1;i <= m;i++)
{
scanf("%d%d%d",&a[i].l,&a[i].r,&a[i].val);
}
sort(a+1,a+1+m,cmp);
Kruskal();
if(ans==n-1)
{
printf("%d\n",sum);
}else
{
puts("orz");
}
return 0 ;
}