1 条题解

  • 1
    @ 2025-11-21 17:51:43
    #include<bits/stdc++.h>
    using namespace std;
    const int N=2e5+10;
    long long n,m,ans,cnt,x,y,fa[5010];
    struct edge{
        long long u,v,w;
    }G[N];
    bool cmp(edge a ,edge b){
        return a.w<b.w;
    }
    int find_root(long long x){
        if(fa[x]==x){
            return x;
        }
        return fa[x]=find_root(fa[x]);
    }
    void kruskal(){
        for(int i=1;i<=m;i++){
            long long x=find_root(G[i].u),y=find_root(G[i].v);
            if(x==y){
                continue;
            }
            ans+=G[i].w;
            fa[x]=y;
            cnt++;
            if(cnt==n-1){
                return ;
            }
        }
        return ;
    }
    int main(){
        ios::sync_with_stdio(0);cin.tie(nullptr);cout.tie(nullptr);
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            fa[i]=i;
        }
        for(int i=1;i<=m;i++){
            cin>>G[i].u>>G[i].v>>G[i].w;
        }
        sort(G+1,G+m+1,cmp);
        kruskal();
        if(cnt!=n-1){
            cout<<"orz";
        }
        else{
            cout<<ans;
        }
        return 0;
    }
    
    

    信息

    ID
    7396
    时间
    1000ms
    内存
    128MiB
    难度
    5
    标签
    递交数
    121
    已通过
    24
    上传者