参考博客:
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