【上下界网络流】基础

%%%CTY大佬1年多前就会了
#可行流
先建立超级原点汇点,为SS和TT,
对于边x->y,下界上界分别是Mi,Mx,拆成3条网络流的标准边:SS->y,流量Mi;x->TT,流量Mi,x->y,流量(Mx-Mi),
连完以后再从T向S连流量为正无穷的边,
从SS开始流(注意,不是从原来的S,T流入流出),TT流出,如果SS的每条边流满,则可行,反则不可行。
感性的理解:这样的拆点相当保证了每条原边都有Mi的流量;而T向S的正无穷边,则是后面的点判断前面的限制是否可以给它至少Mi的流量,这个读者可以仔细想一下,挺显然的(感觉有其他的方法,但起码这个一定是正确的)

#最大流
先判断这个图可行,
那么最大流就是这个图去掉下界以后的最大流。

#最小流
同样先判断这个图可行,
把T->S的边删掉,流一遍,再加上这条边,流一遍,最小流就是这条边的流量,

证明:这相当于给了S->T这条边小的优先值,最后再流;连向TT的边都是为了保证原图中每条边至少有Mi的流量,它再下一条点还会流入的,所以真正的流量是T->S这条边的流量,而满足下界的流量一定是最小流量;

你可能感兴趣的:(专题,上下界网络流)