1 条题解

  • 0
    @ 2025-2-21 19:05:34
    #include <bits/stdc++.h>
    using namespace std;
    int n,m,f[200],ans,x,sum;
    struct g
    {
        int from,to,val;
    }l[20010];
    bool cmp(g a, g b)
    {
        return a.val<b.val;
    }
    int find(int x)
    {
        if (f[x]==x) return x;
        else return f[x]=find(f[x]);
    }
    void Kuskal()
    {
        int a,b;
        sort(l+1,l+1+m,cmp);
        for (int i=1; i<=m; i++)
        {
            a=find(l[i].from); b=find(l[i].to);
            if (a==b) continue;
            sum+=l[i].val;
            f[a]=b;
            x++;
            if (x==n) return;
        }
    }
    int main(){
        int i;
         
        cin>>n>>m;
         
        for (i=1; i<=n; i++)
        {
            f[i]=i;
        }
        for (i=1; i<=m; i++)
        {
            scanf("%d%d%d",&l[i].from,&l[i].to,&l[i].val);
            ans+=l[i].val;
        }
        Kuskal();
         
        printf("%d",ans-sum);
         
        return 0;
    }
    

    信息

    ID
    6853
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    2
    已通过
    2
    上传者