1 条题解

  • 0
    @ 2026-6-14 15:37:22

    
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    const int N=1e5+10;
    struct node{int x, y, c;} a[N];
    bool cmp(node n1, node n2) {return n1.c < n2.c;}
    int f[N], s[N];
    int findfa(int x) {return (f[x]==x)? f[x]: f[x]=findfa(f[x]);}
    int main()
    {
        int n; scanf("%d", &n);
        for(int i=1; i<=n; i++) f[i]=i, s[i]=1;
        for(int i=1; i<n; i++)scanf("%d%d%d", &a[i].x, &a[i].y, &a[i].c);
        sort(a+1, a+n, cmp);
        LL ans=0;
        for(int i=1; i<n; i++)
        {
            int x=a[i].x, y=a[i].y;
            int tx=findfa(x), ty=findfa(y);
            ans=ans+(LL)(s[tx]*s[ty]-1)*(a[i].c+1)+a[i].c;
            f[tx]=ty; s[ty]+=s[tx];
        }
        printf("%lld\n", ans);
        return 0;
    }
    
    
    • 1

    D140 【最小生成树】构造完全图 走廊泼水节

    信息

    ID
    1876
    时间
    1000ms
    内存
    512MiB
    难度
    7
    标签
    递交数
    24
    已通过
    8
    上传者