题目链接
题意:有 N 栋大楼,M 个避难所,每个大楼里有 Bi 个人,每个避难所有 Ci 的容量,人去避难所避难,
现在给你一个避难的计划,问你这个计划是不是最优的,如果不是最优的,那就找一个比这个优的方案,并输出来。
思路:问的是,这个方案是不是最优的,如果不是,输出一个更优的,并不是输出最优的。
我们要知道,最小费用最大流 等价于 跑完图之后,这个图没有 负环。
所以这个题就可以看看 残余网络上 有没有负环,如果没有,那么就是最优的解,如果有负环,在负环上增广一下,那就是更优的解了。
首先我们就要见残余网络的图。
0 源点
1 ~ n 建筑物
n + 1 ~ n + m 避难所
n + m + 1 汇点
1、首先 人要去避难,, 建筑物 到 避难所 要建一条权值为距离的边
2、在给定的计划上,i 到 j 有人避难, 所以要建一条反向边, 权值为 负的。
3、在 j 这个避难所,是不是有避难的人,如果有,建一条从 汇点 到 j 的权值为 0 的边。
为什么?我的想法是, 人可以从 j 走到汇点,然后就要再一条 反向边。
如果 避难的人 没有超过当前避难所的容量,那就要建一条 从 避难所 到 汇点 的 权值 为 0 的边。
为什么?