POJ - 2175 Evacuation Plan (网络流, SPFA 消去负环)

本文介绍如何使用网络流和SPFA算法解决一道关于避难计划优化的问题。通过建立残余网络并检测是否存在负环,来判断现有计划是否最优,并提供改进方案。具体步骤包括构建源点、建筑物、避难所和汇点之间的边,以及根据避难计划调整边的权重。如果发现负环,则通过增广路径寻找更优解。
摘要由CSDN通过智能技术生成

题目链接

题意:有 N 栋大楼,M 个避难所,每个大楼里有 Bi 个人,每个避难所有 Ci 的容量,人去避难所避难,

现在给你一个避难的计划,问你这个计划是不是最优的,如果不是最优的,那就找一个比这个优的方案,并输出来。

 

思路:问的是,这个方案是不是最优的,如果不是,输出一个更优的,并不是输出最优的。

我们要知道,最小费用最大流 等价于 跑完图之后,这个图没有 负环。

所以这个题就可以看看 残余网络上 有没有负环,如果没有,那么就是最优的解,如果有负环,在负环上增广一下,那就是更优的解了。

首先我们就要见残余网络的图。

 0  源点

1 ~ n 建筑物

n + 1 ~ n + m  避难所

n + m + 1 汇点

1、首先 人要去避难,, 建筑物 到  避难所 要建一条权值为距离的边

2、在给定的计划上,i 到 j 有人避难, 所以要建一条反向边, 权值为 负的。

3、在 j 这个避难所,是不是有避难的人,如果有,建一条从  汇点 到 j 的权值为 0 的边。

为什么?我的想法是, 人可以从 j 走到汇点,然后就要再一条 反向边。

如果 避难的人 没有超过当前避难所的容量,那就要建一条 从 避难所 到 汇点 的 权值 为 0 的边。

为什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值