Skip to content

kruskal重构树 ​

模板 ​

  • 如果是最小生成树,那么u,v之间路径的最小边权最大值,即为lca(u,v)的权值
  • 如果是最大生成树,那么为最大边权最小值
cpp
void Ex_kruskal(){
    sort(e.begin(),e.end());
    dsu.init(2*n+1);
    for(auto [u,v,c]:e){
        if(dsu.same(u,v))continue;
        ++idx;
        u=dsu.find(u),v=dsu.find(v);
        adj[idx].push_back(u);
        adj[idx].push_back(v);
        dsu.merge(idx,u);
        dsu.merge(idx,v);
        w[idx]=c;
    }
}