其他分享
首页 > 其他分享> > 长乐集训合集

长乐集训合集

作者:互联网

## 最小差值生成树

题目保证一定有生成树,并且图是联通的,那么我们只需要加一些限制条件枚举最小生成树即可.;

按边从小到大排序,然后从最小边开始枚举,暴力尝试添加每一条边,期望时间复杂度 O(M^2logN).

inline void kruskal(){
    sort(e+1,e+m+1);
    rep(i,1,m){
        makeset(n);//对于每条最小边都做一次最小生成树。
        int cnt=1;
        fa[e[i].u]=e[i].v;
        int maxv=e[i].w;
        rep(j,i+1,m){
            int fu=find(e[j].u),fv=find(e[j].v);
            if(fu==fv)continue;
            fa[fu]=fv;
            maxv=max(maxv,e[j].w);
            if(++cnt==n-1)break;
        }
        if(cnt==n-1)//这里一定要判一下是不是==n-1,因为可能图不连通
            ans=min(ans,maxv-e[i].w);
    }
}

标签:cnt,fu,fv,int,maxv,最小,长乐,合集,集训
来源: https://www.cnblogs.com/sjsjsj-minus-Si/p/11634664.html