最小割树

Posted lhm-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最小割树相关的知识,希望对你有一定的参考价值。

通过建最小割树 ((Gomory-Hu Tree)) 来快速求解无向图中两点间的最小割。

最小割树中的一条边的权值,为其两端点的最小割,那么任意两点之间的最小割即为路径上的最小值。

通过递归建树即可。

(code:)

void build(int l,int r)
{
    if(l==r) return;
    s=p[l],t=p[l+1];
    int v=F.dinic(),cnt1=0,cnt2=0;
    add(s,t,v),add(t,s,v);
    for(int i=l;i<=r;++i)
    {
        int x=p[i];
        if(F.d[x]) p1[++cnt1]=x;
        else p2[++cnt2]=x;
    }
    for(int i=1;i<=cnt1;++i) p[l+i-1]=p1[i];
    for(int i=1;i<=cnt2;++i) p[l+cnt1+i-1]=p2[i];
    build(l,l+cnt1-1),build(l+cnt1,r);
}

以上是关于最小割树的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces 343E 最小割树

bzoj4435: [Cerc2015]Juice Junctions(最小割树+hash)

最小割树和网络流水题

最小割树

[bzoj2229][Zjoi2011]最小割_网络流_最小割树

bzoj2229: [Zjoi2011]最小割(最小割树)