这几天去搞了搞基础的算法,就把网络流放了几天,如今上来总结一下网络流的各类变体,有相似题目的话我尽可能会附加。算法
所谓图的割,指的是对于某个顶点集合S, 从S发出指向S外部的那些边的集合,记为割(S, V\S)。这些边的容量之和被称为割的容量。对应到流的图中,若是有源点s belong to S,, 而汇点t belong to (V \ S),那么此时的割又称为s - t割。若是将网络中s - t割的全部边都删除,也就不会再有s到t的路径。网络
最小割问题:对于给定网络,为了保证从s 到t没有路径,须要删除的边的总容量的最小值是多少?blog
最大流最小割定理:最大流的流量等于最小割的容量。基础
1.多个源点的多个汇点的网络流:im
创建超级源点s,而且创建从超级源点到其它源点的容量为无穷,创建超级汇点,从其它汇点到超级汇点创建一条容量为无穷的边。求出从s到t的最大流便可。总结
2.无向图上的最大流:模版
把无向图转换为有向图,只须要把无向图中容量为c的边创建一条反向边,两条边同时存在,求出最大流便可。img
3.顶点上也有容量限制的状况:集合
图中不光边上有容量限制,途中通过的顶点也有总流入两个总流出量限制的状况应该如何处理呢?此时咱们能够把每一个顶点拆成两个顶点,拆点以后获得两个顶点分别为入顶点和出顶点,将指向原先顶点的边改为指向入顶点,将从原先顶点指出的边改为从出顶点指出。而且,再从入顶点向出顶点连容量为原先顶点容量的边,就能够把顶点上的容量限制转为边上的容量限制。比赛
4.有最小流限制的状况:
是指每条边不光有最大流C限制,还有最小流量B的限制的状况,也即(B(e) <= f(e) <= C(e))。令f'(e) = f(e) - B(e),这就能够转化为只有最大流量限制的状况,也即0 <= f'(e) <= C(e) - B(e)。
而此时顶点对应的总流入量和总流出量的关系变为
挖个坑,打完比赛再补上,如今要去作模版题了,嘤嘤嘤