#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct node
{
int u,v,len;
}a[3005];
int cmp(node x,node y)
{
return x.len<y.len;
}
int f[1005];
int find(int x)
{
if(x!=f[x])
f[x]=find(f[x]);
return f[x];
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++)
scanf("%d%d%d",&a[i].u,&a[i].v,&a[i].len);
sort(a,a+m,cmp);
for(int i=0;i<n;i++)
f[i]=i;
int ans=0;
for(int i=0;i<m;i++)
{
int fa=find(a[i].u);
int fb=find(a[i].v);
if(fa!=fb)
{
if(fa>fb)
f[fa]=fb;
else
f[fb]=fa;
n--;
ans+=a[i].len;
}
}
if(n==1) printf("%d\n",ans);
else printf("-1\n");
}
公路村村通 -并查集
最新推荐文章于 2022-05-15 18:24:48 发布