1 条题解
-
0
自动搬运
来自洛谷,原作者为

SovietPower✨
因你而起的一泓喜悲 权当年轻 留个纪念搬运于
2025-08-24 21:45:58,当前版本为作者最后更新于2019-01-02 08:04:38,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
这种题大多是多源多汇跑网络流。往返次可以看做去次,直接把危桥能走的次数看做。
先不考虑别的,直接按原图建模:危桥建双向边容量为,普通桥容量为;然后源点向分别连容量的边,分别向汇点连容量的边。
这样跑出来的最大流会有两个问题(好多题解都没提问题二?):
一是,的的一部分流量可能是来自的,同理的一些流量可能来自。
二是,危桥只能走一次,但这样可能会正反走两次。
也就是不能直接判断是否满流来判断是否可行。办法是,交换(连,连),重新建图,再跑最大流。只有两次均满流才一定存在可行方案。
交换后再判断是否满流,如果你觉得问题一显然已经被解决了可以跳过下面这段。
如果满流且仍然存在问题一那种情况呢?画个图。
假设第一次跑最大流,的流量为,那么的流量为,的流量也是,的流量是。
而第二次跑最大流,因为是无向图,和的流量可以不变,还是。那么和的流量也都还是。
而这两次说明了什么呢,可以流到 流量,还可以流到 流量,同时不影响与,与之间的流量。因为是无向图,将的流量反向,就可以得到 的流量。之间的流就合法了。
同理之间的流也合法。
所以如果交换后仍满流,一定不存在问题一那种情况。
对于问题二,
好多题解都没有写也许是太显然了?假如正向经过了一座危桥,而反向经过了这座桥,那么交换,以为起点后,两条路径都是正向通过了这条边,就受到了流量的限制。
所以如果仍满流,不存在问题二。
所以两遍最大流就可以了。
代码就不需要放了。。
- 1
信息
- ID
- 2236
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 6
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者