#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,fa[300000],ans,sum;
struct node
{
	int l,r,u;
}lr[300000];
bool cmp(node x,node y)
{
	return x.u<y.u;
}
int find(int k)
{
	if(fa[k]==k)
	{
		return k;
	}
	else
	{
		fa[k]=find(fa[k]);
		return fa[k];
	}
}
signed main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int x,y,z;
		cin>>x>>y>>z;
		lr[i].l=x;
		lr[i].r=y;
		lr[i].u=z;
	}
	sort(lr+1,lr+1+m,cmp);
	for(int i=1;i<=n;i++)
	{
		fa[i]=i;
	}
	for(int i=1;i<=m;i++)
	{
		if(ans==n-1)
		{
			cout<<sum;
			break;
		}
		if(find(lr[i].l)!=find(lr[i].r))
		{
			fa[fa[lr[i].r]]=fa[lr[i].l];
			ans++;
			sum+=lr[i].u;
		}
	}
	return 0;
}

75分 球球啦qwq

2 条评论

  • @ 2024-8-12 18:57:22
    • @ 2024-8-12 18:56:09

      要把 if(ans==n-1) {cout<<sum;break;} 的位置和 if(find(lr[i].l)!=find(lr[i].r)) { fa[fa[lr[i].r]]=fa[lr[i].l]; ans++; sum+=lr[i].u; } 的位置换一下AC

      • 1

      信息

      ID
      91
      时间
      1000ms
      内存
      256MiB
      难度
      3
      标签
      递交数
      871
      已通过
      286
      上传者