最大权闭合子图
注意有别于集合划分模型
闭合子图:\(\forall x\in V,(x,y),y\in V\),也就是说对于点集的每个点,它的出边所指向的点也在该点集内。
实际问题的意义大多 \((x,y)\) 指倘若 \(x\) 选了,那么 \(y\) 也选了。
考虑对于每个点赋权,有正有负,以及若干限制,选了 x 就一定要选 y,要求最后选的利益最大。
考虑正权要选那么可能会需要选到若干负权的,否则干脆都不选。
对于正权点的,连 \(S\to i\),容量为 \(a_i\),对于负权的,连 \(i\to T\) 容量为 \(-a_i\),限制连容量 \(\infty\),那么跑最小割的话的答案就是舍弃掉一些权值,再用所有正权和减去即可。
证明:倘若正权与 S 的边被割了,那么说明最后没有选择正权,则与其相连的负权边的出边也一定不会被割!倘若正权与 S 的边没被割,那么相连的负权到 T 的边一定都被割,即该正权点所选需要满足的限制都满足了,这时候这一部分会减去(负贡献)
最小权
\(a\) 都取相反数,那么最后出来的就是最小权闭合子图的相反数,因为考虑最小权闭合子图选出来的点集为 \(V\),即 \(\min \sum_{x\in V} a[x]\),现在我们求出来了 \(\max \sum_{x\in V} -a[x]\),显然二者互为相反数关系。
类比下最长路,即将边权都乘上 -1,跑最短路。