2 条题解

  • 9
    @ 2023-7-17 16:05:02
    #include<bits/stdc++.h>
    using namespace std;
    #define  int long long
    struct node
    {
    	int u,v,w;
    };
    node a[1000001];
    int fa[1000001];
    int get(int x)
    {
    	if(fa[x]==x)return x;
    	return fa[x]=get(fa[x]);
    }
    bool cmp(node x,node y)
    {
    	return x.w<y.w;
    }
    main()
    {
    	ios::sync_with_stdio(0);
    	cout.tie(0);cin.tie(0);
    	int n,m,ans=0,tot=0;
    	cin>>n>>m;
    	for(int i=1;i<=m;i++)
    	{
    		cin>>a[i].u>>a[i].v>>a[i].w;
    	}
    	for(int i=1;i<=n;i++)fa[i]=i;
    	sort(a+1,a+1+m,cmp);
    	for(int i=1;i<=m;i++)
    	{
    		int u=a[i].u;
    		int v=a[i].v;
    		int w=a[i].w;
    		if(get(u)!=get(v))
    		{
    			ans+=w;
    			fa[get(u)]=get(v);
    			tot++;
    			if(tot==n-1)break;
    		}
    	}
    	cout<<ans;
    	return 0;
    }
    
    

    信息

    ID
    473
    时间
    1500ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    917
    已通过
    99
    上传者