上下界网络流

无源汇上下界可行流

这个人讲的真的好

我们需要保证每个边的下界一定被流满,于是我们可以先让下界流满,在用一些方法进行调整(在原图上加一些流, 使得流量平衡)

有源汇上下界可行流

从超级汇点向超级源点连一条流量为无限的边, 问题就转化成了无源汇可行流了

需要的流量就是 \(s -> t\) 的残余网络

有源汇上下界最大(最小)流

我们发现用上面方法求出来的是一个可行流但不一定最大(最小)

于是我们再从原图跑一遍网络流,使它最大(最小)

如果是求最大流, 答案就是原流 + 从 \(s -> t\) 新增广的流

如所是求最小流, 答案就是原流 - 从 \(t -> s\) 新增广的流

这里涉及一些细节问题

跑可行流时, \(s -> t\) 的残余网络上才是这次可行流需要的增广的流,再跑最大(最小)流时,需要把 \(s -> t\) 断掉

具体参见这两个题吧,注意代码细节

例题

P5192 Zoj3229 Shoot the Bullet|东方文花帖

P4843 清理雪道

posted @ 2020-06-06 12:34  __int256  阅读(180)  评论(0编辑  收藏  举报