最大权闭合子图(模板)

参考博客:
http://www.cnblogs.com/kane0526/archive/2013/04/05/3001557.html

http://www.cnblogs.com/wuyiqi/archive/2012/03/12/2391960.html

http://blog.csdn.net/sdj222555/article/details/7797534

http://www.cnblogs.com/vb4896/p/4149107.html

什么是最大权闭合子图:

最大权闭合子图指选择u,则u以下关系的都要选,一定要选到底,不能跳过u选它以下的。增设一个超级源点和一个超级汇点,(1->n)的点中,当点权为正时,从源点向该点连一条权值为点权大小的边,当点权为负时,从该点连一条权值大小为它的绝对值的边连向汇点。这种问题一般都是对于(u,v),如果选择u必须选择v,对(u,v)连一条容量为oo的边。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-do1V4ZCF-1613976889417)(https://img-blog.csdn.net/20160821165905429)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GDYBpKOp-1613976889424)(https://img-blog.csdn.net/20160821170018617)]

结论:
最小割为简单割
闭合图是简单割
简单割是闭合图
最小割所产生的两个集合中,其源点S所在集合(除去S)为最大权闭合图。
答案数等于靠近源点最小割一边的点数,最大利益=所有点正权值之和-最小割。

证明参考博客:http://www.cnblogs.com/wuyiqi/archive/2012/03/12/2391960.html

—————————————————————————————

对于一个图,我们可能会有多种割法得到的最大权封闭子图的价值相等。

求所得最大权子图中的所有点:遍历源点能到达所有点,能遍历到说明其点在子图中,什么叫能遍历到呢?就是检查残余网络中的边和反向边,若(u,v)边权大于0,则说明u能到达V。

这样能遍历到的一定是点数最少的最大权封闭子图,证明见:http://blog.csdn.net/sdj222555/article/details/7797534

如何求最多能遍历到一种类型的点在最大价值下最多能有多少个呢,比如有梦想和付出,完成梦想可以得到价值,完成付出需要消耗价值,如何求在得到最大价值的情况下最多能得完成多少个梦想呢。

给所有连接到源点汇点的边权乘一个较大的常数,另给连接到源点的梦想的边权加1,这样弄一遍网络流,得到的最大价值除一个较大的常数就是我们需要的价值,源点能到达的梦想就是最大梦想。

参考博客http://www.cnblogs.com/vb4896/p/4149107.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值