【被迫营业10】二分图最大独立集

模型:有两个集(A)(B),现在要从两个集合中选出一些,但是会有一些关系限制,对于每个限制((i,j)),表示(A)中的第(i)个元素和(B)中的第(j)个元素不能同时选。试求出最多能选几个元素。

Solution

考虑二分图。
建立超级源点(S)和超级汇点(T)
对于所有(x in A),连边((S,x,1))
对于所有(x in B),连边((x,T,1))
对于每个限制((i,j)),连边((A_i,B_j,+infty))
然后跑最大流即可。

简单证明:
首先我们考虑将所有的元素全部选上,然后再删掉最小数量的元素。
发现若(S)(T)不连通,那么这个选择就是正确的。于是考虑到最小割。
在上面建图过程中,割掉的边不会是限制边,换句话说,一定是简单割
那么我们只需要跑一下最小割,未被割掉的边所代表的点就是选择方案。
因为对于一组限制((i,j)),如果((S,A_i))((B_j,T))未被割掉,那么(S)(T)仍然联通,与割的性质不符。
因为最大流最小割定理,所以等同于跑一遍最大流。
证毕。

原文地址:https://www.cnblogs.com/luyiming123blog/p/14438070.html