Multiple Source Multiple Sink Max flow - 多源点多汇点最大流
问题
求网络流的最大流,是多源点、多汇点,边的容量都为正整数的网络。
解法
将多源点、多汇点的网络改造为单源点、单汇点的,就可以将该问题转化为普通的最大流问题。
设个源点为,个汇点为,如下图所示:
新增源点和汇点,构造新增源点到所有源点的边,容量为无穷大,即
其中。
构造所有汇点到新增汇点的边,容量为无穷大,即
其中。
把原网络中的源点汇点当作普通节点,即可得到新的单源点、单汇点网络,如下图所示:
新网络的最大流即为原网络的最大流,该算法的时间复杂度与所采用最大流算法的时间复杂度相同。
源码
MultipleSourceMultipleSinkMaxFlow.h
MultipleSourceMultipleSinkMaxFlow.cpp