poj 2185(流的最小费用的充要条件)消负圈

【题意】:一个城市有n座建筑物,每个建筑物里面有一些人,为了在战争爆发时这些人都可以避难,城市里面建了m座避难所。每座避难所只能容纳有限人数。给出每个建筑物和避难所的坐标(题目要求距离为曼哈顿距离+1)。现在给你一种避难方案,问这种方案是否为最优方案,如果不是,请输出一种比当前更优的方案(不一定最优)。

【题解】:好明显的费用流(距离看成费用),如果此题建费用流模型找最小费用流必定超时,而且题目不需要我们找到最优方案。
定理:
一个费用流是最小费用流的充要条件是这个费用流的残量网络没有负费用圈。
由这个定理,我们只需判断当前方案是否有负费用圈,没有即意味着当前方案为最优方案。
如果有的话,此时只需沿着负费用圈把各边流量增加1,增流之后残量网络对应的方案肯定是一个更优方案(很容易证明)。
实际操作时只需加入一个汇点t,按照当前方案流量像平时一样连边,用spfa从以汇点t为源点找负费用圈,找到负费用圈的充要条件是某个点进入队列大于等于n次。

你可能感兴趣的:(网络)