首先,對于無源匯的上下界可行流,常見做法是拆邊:

然后轉換成無下界的模型去做:

即添加源匯s, t,然后將任意一條邊(u, v, l, c)(即u到v,下界l,上界c的邊)拆成三條:
(u, v, 0, c - l), (s, v, 0, l), (u, t, 0, l)
其思想實際就是讓所邊的下界流量的分離出來,作為一條"必要邊"(即如果有可行流,這些容量為下界的邊一定是滿的),讓其統一流入匯,然后讓源點來提供這樣的流量。
然后在這個網絡上求最大流??醋畲罅魇欠?== 所有邊的下界之和。

如果題目已經有了源匯,我們就先連一條(t, s, 0, 無限大)的邊(顯然這不影響流量平衡條件)。這樣就轉換成了前面所說的無源匯的情況,然后求之。
輸出的結果就讓相應原始邊的流量加上他們的下界就可以了(即邊(u, v, 0, c - l)的流量 + l)。

對于有源匯的上下界最大流 可以二分枚舉(t,s)邊的容量下界,判斷是否存在可行流。
對于有源匯的上下界最小流 可以二分枚舉(t,s)邊的容量上界,判斷是否存在可行流。

SGU194