最大权闭合图

现在有一个有向图,每个点有点权,点权可正可负。对于任意一条有向边i和j,选择了点i就必须选择点j,你需要选择一些点使得得到权值最大。
这个问题可以用网络流解决。
建图方法:对于任意点i,如果i权值为正,s向i连容量为其权值的边,否则i向t连容量为其权值的绝对值德尔边。原图所有边容量为正无穷。则最大权=正权和-最大流。
如何证明呢?我们把最大流理解成最小割,那么割掉的边一定不可能是正无穷的边。
我们发现,选择一个正权点即不割掉s到其的边,选择一个负权点即割掉其到t的边。
现在证明方案合法。
对于依赖关系i到j:
假设i点权为正j点权为负。选了i不选j即没有割掉s到i的边而且没有割掉j到t的边,显然s和t联通,不符合最小割定义。
假设i点权为负j点权为正。选了i不选j即割掉i到t的边而且割掉s到j的边,由于s到t现在不连通,我们不割这两条边同样s和t是不联通的,那么割这两边不满足割量最小,不符合最小割定义。
其余情况同理,不符合割量最小。
注意这个算法不需要原图是DAG。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值