直接转二分图之后求一遍最大点权独立集
最大点权独立集=总权值-最小点权覆盖集
最小点权覆盖集就是每一条边至少有一个定点处于集合中,且这些点的权值最小
然后我们先看看最小点权覆盖集怎么求
这是有一种模板的把图黑白染色之后把S连向黑色点流量为黑点权值,白点连向T流量为白点权值
然后黑点白点相连的点连一条流量为inf的边,然后跑完最大流就是最小点权覆盖集了
为什么呢??我们知道最大流=最小割,那么用最小割的眼光来看着题,就是S->a,a->b,b->T
那么显然不会割a->b这条边,因为是inf,割它是作死吗??
然后肯定是割S->a,或者b->T,意思就是两个点中至少选一个点嘛
然后就可以求出最小点权覆盖集了
(下面证最大点权独立集=总权值-最小点权覆盖集
网上都说去看胡*涛的论文,但我自己是这么想的
最小点权覆盖集其实就是相连两个点至少选一个点
而最大点权独立集其实就是相连两个点至多选一个点
那么其实就是减一减的事情咯)
上面是原版证明,但我觉得还是不够严谨 下面改一下
下面证最大点权独立集=总权值-最小点权覆盖集
先证点独立集=总点-覆盖集
网上都说去看胡*涛的论文,但我自己是这么想的
覆盖集其实就是相连两个点至少选一个点
而点独立集其实就是相连两个点至多选一个点
所以点独立集=总点-覆盖集
然后我们要求点独立集最大,而总点为定值,所以要覆盖集最小咯
所以最大点权独立集=总权值-最小点权覆盖集
接下来就是码农的任务了
都讲这么清楚了还要用代码吗?