• 最小生成树


    最小生成树是在n个点的图中选n-1条边构成树(每个点都满足能够互相达到,即直接连接或间接)

    整一整kruskal

    模板:

    #include<bits/stdc++.h>
    using namespace std;
    int n,m;
    int fa[5005];
    inline int father(int t){
        if(fa[t]!=t) fa[t]=father(fa[t]);
        return fa[t];
    }
    inline void u(int l,int r){
        int fl=father(l);
        int fr=father(r);
        if(fl!=fr) fa[fl]=fr; 
    }
    struct ed{
        int len;
        int begin,end;
    }dis[200005];
    inline bool cmp(ed a,ed b){
        return a.len<b.len;
    }
    int sum;
    int num;
    int main(){
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
            fa[i]=i;
        for(int i=1;i<=m;i++){
            int x,y,z;
            scanf("%d%d%d",&x,&y,&z);
            dis[i].begin=x;
            dis[i].end=y;
            dis[i].len=z;
        }sort(dis+1,dis+1+m,cmp);
        for(int i=1;i<=m;i++){
            if(father(dis[i].begin)!=father(dis[i].end)){
                u(dis[i].begin,dis[i].end);
                sum+=dis[i].len;
                num++;
            }
            if(num==n-1){
                cout<<sum<<endl;
                return 0;
            }
        }
        cout<<"orz";
        return 0;
    } 
  • 相关阅读:
    nginx编译安装
    使用scp命令,不同服务器之间拷备文件
    cpu负载过高排查与解决
    Docker安装
    sftp安装
    nginx登陆验证 [done]
    git常用命令
    python常见问题记录
    升级openssl
    rsync使用
  • 原文地址:https://www.cnblogs.com/648-233/p/10776111.html
Copyright © 2020-2023  润新知