【DayDayUp】【算法_图_网络流_之三_最小费用最大流】(待补全)

本文详细介绍了最小费用最大流的基本概念及其求解方法,并通过具体实例进行了解析。重点讲解了如何构造图模型来解决特定问题,同时给出了SPFA算法的应用及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【坚持不能偷懒】

网络流这块有点懵逼,所以一起搞一下

最小费用最大流,下面介绍的是常规做法,比较裸


思路是:

记Flow为剩余流量,Cost为单位流量价格,S为源点,T为汇点

每次在【剩余图】中增广一条【最小单位流量费用】的增广路

怎么做到呢,凡是Flow不为0,表示一条路可以走

然后我们找一条S到T的(可以走的,最小Cost和的路)

那么从S到T的【单位流量消耗】是最小的

然后,看看这条路能提供多少流量

找这条路就很easy了,直接把Cost当作距离,Flow不为0作为是否存在路径

跑一发最短路,通常用的是SPFA跑


建图就是

正向边的流量为 flow 单价为   cost 

反向边的流量为 0 单价为 - cost


PS:裸的SPFA遇到负环会懵逼,但网上套板子过了到题,好像没管


POJ 2135

N点M边,无向非完全图,边上有权重(代价)

问从N走到M再回来,一条边最多走一次的最小代价

解:

建一个S到1,flow = 2 cost = 1

建一个N到T,flow = 2 cost = 1

然后对于 from to cost 的无向边

建 from to flow = 1 cost 

和 to from flow = 1 cost 的两条边

这样跑出来的最大流就是结果

http://blog.youkuaiyun.com/stillxjy/article/details/52047189

模板参考如上blog

注意的是,初始化的时候,点数因为要加上自己做的大源点和大汇点

初始化的n是n+2,不然跑不出来……(这是血泪的教训)



——————————待补全———————————

1、SPFA跑负环会炸毛么

2、路径怎么搞出来

3、算法复杂度和优化



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值