1111
  • 板块题目总版
  • 楼主CSGO_fans
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/14 10:56
  • 上次更新2024/8/14 10:56:59
查看原帖
1111
758239
CSGO_fans楼主2024/8/14 10:56
#include<bits/stdc++.h>
using namespace std;
const int maxn=200010;
#define int long long
int fa[maxn];

struct node{
	int a,b,c;
};

node s[maxn];

int find(int x)
{
	if (fa[x]==x)
		return x;
	
	fa[x]=find(fa[x]);
	return fa[x];
}

bool cmp(node x,node y)
{
	return x.c>y.c;
}
signed main()
{
		
	int n,m;
	scanf("%lld%lld",&n,&m);
	
	for (int i=0;i<m;i++)
		scanf("%lld%lld%lld",&s[i].a,&s[i].b,&s[i].c);
		
	for (int i=1;i<=n;i++)
		fa[i]=i;
	 
	sort(s,s+m,cmp);
	int ret=0,cnt=0;
	
	for (int i=0;i<m;i++)
	{
		int ta=find(s[i].a);
		int tb=find(s[i].b);
		
		if (ta!=tb)
		{
			fa[ta]=tb;
			cnt++;
			ret+=s[i].c;
			
		}
	}
	
	if (cnt!=n-1)
		printf("-1");
	else
		printf("%lld",ret); 
	
	return 0;
}
2024/8/14 10:56
加载中...