1 条题解

  • 0
    @ 2023-10-18 9:54:06

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    const int N=110,M=210;
    struct Edge{
        int a,b,w;
        bool operator<(const Edge& W)const
        {
            return w<W.w;
        }
    }e[M];
    int p[N];
    int find(int x)
    {
        if(x!=p[x])
        {
            p[x]=find(p[x]);
        }
        return p[x];
    }
    int main()
    {
        int n,m;
        cin>>n>>m;
        for(int i=1;i<=n;i++)
        {
            p[i]=i;
        }
        for(int i=1;i<=m;i++)
        {
            int a,b,w;
            cin>>a>>b>>w;
            e[i]={a,b,w};
        }
        sort(e+1,e+1+m);
        int res=0;
        for(int i=1;i<=m;i++)
        {
            int pa=find(e[i].a);
            int pb=find(e[i].b);
            if(pa!=pb)
            {
                p[pa]=pb;
            }
            else
            {
                res+=e[i].w;//之前已经连通,需要去掉
            }
        }
        cout<<res;
        return 0;
    }
    
    • 1

    信息

    ID
    739
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者