文章目录
引言
⌊ \lfloor ⌊ 给定一个网络图与其源点、汇点,每条边都有其流量的上限。请你求出它的网络最大流。 ⌉ \rceil ⌉
这一道题目大家一定可以看出——这不是裸的最大流吗!跑一遍 Dinic 就完事啦!
但是,如果我们将题目进行一个转化:
⌊ \lfloor ⌊ 给定一个网络图与其源点、汇点,每条边都有其流量的上限以及下限。请你求出它的网络最大流。 ⌉ \rceil ⌉
这时,每条边都有了其流量的上下界,使用 Dinic 直接做似乎较为困难。
于是,本篇文章主要解决边流量有上下界的问题。
Part 1: 无源汇上下界可行流
Description
n n n 个点, m m m 条边,每条边都有一个流量下界和流量上界 。求一条可行流,使得在所有点满足 ⌊ \lfloor ⌊ 流量平衡 ⌉ \rceil ⌉ 的前提下,所有边满足流量限制。
1 ≤ n ≤ 200 , 1 ≤ m ≤ 10200 1 \le n \le 200,1 \le m \le 10200 1≤n≤200,1≤m≤10200
Solution
一种初步的想法是:将旧网络图中每条边的流量,定义为其上界减去下界;从而组成新网络图。然后直接在新网络图搜出可行流即可。
但是这么做会出现一个致命的问题:旧图中对应的 ⌊ \lfloor ⌊ 实际流量 ⌉ \rceil ⌉ 不满足 ⌊ \lfloor ⌊ 流量平衡 ⌉ \rceil ⌉ 。例如:

原图中 1 → 2 → 3 1 \to 2 \to 3 1→2→3 不是可行流,但在新图中它却成为了一条可行流。
仔细分析一下这一个反例,我们会发现:在新图中 1 → 2 1 \to 2 1→2 流了 20 20 20 个单位,在原图中对应着 40 40 40 ; 2 → 3 2 \to 3 2→3 流了 20 20 20 个单位,在原图中对应着 70 70 70 ,不满足流量平衡,从而出现了上面的反例。
考虑通过建立一些 ⌊ \lfloor ⌊ 虚边 ⌉ \rceil ⌉ 使得对应的原图满足流量平衡。
令第 i i i 个点的点权 a i a_i ai 为其 ⌊ \lfloor ⌊ 所有入边的下界和 ⌉ \rceil ⌉ 减去 ⌊ \lfloor ⌊ 其所有出边的下界和 ⌉ \rceil ⌉。
- 若 a i > 0 a_i >0 a

本文探讨了网络流问题中的上下界约束,包括无源汇的可行流、有源汇的最大流、最小流及最小费用最大流等问题。通过构建新图和引入虚拟边的方式解决了这些复杂问题。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



