POJ1466_Girls and Boys_二分图匹配求解最大独立集

来源:互联网 发布:淘宝客佣金怎么算 编辑:程序博客网 时间:2024/06/18 12:47

题意

一共有 n 个学生,每个学生和其他几个学生关系不好。找一个最大的集合,使这个集合中不存在一对关系不好的学生,输出这个集合的大小。

思路

最大独立集 = 顶点数 - 最大匹配数

相关概念

设图 G = ( V , E )
匹配:在G中两两没有公共端点的边集合
边覆盖:G 中的任意顶点都至少是 F 中某条边的端点的边的集合
点覆盖:G 中的任意边都至少有一个端点属于 S 的顶点集合。
独立集:G 两两互不相连的顶点集合

基本结论

1.最大独立集 + 最小顶点覆盖 = 顶点数

从图中将任意一个顶点覆盖剔除,则所有边都失效了,剩下的必然是一个独立集。如果剔除的是最小顶点覆盖,则剩下的显然就是最大独立集。

2.最小顶点覆盖 = 最大匹配数

最小顶点覆盖就相当于把最大匹配中的每一对点去掉一个,显然最小顶点覆盖等于最大匹配。
可是,万一还有没有被选入最大匹配的边,你去掉一个以后剩下的那个有与其他点链上了呢?这时不可能的。
如果已匹配的一对点中有一个还与最大匹配之外的点有边,则把这个点去掉就好了。如果两个点有,那如果把这一对匹配去掉,连上那两条边,匹配数+1,这和最大匹配矛盾了,所以也不成立。

3.对于不存在孤立点的图,最大匹配数 + 最小边覆盖 = 顶点数

先在最大匹配的基础上添加边形成最小边覆盖,其中后来添加的每一条边都对应一个节点,而原本最大匹配中的边每一条对应两个节点,所以有
顶点数 = 最大匹配数 + 后来添加的边数 (最小边覆盖 - 最大匹配数) + 最大匹配数 = 最大匹配数 + 最小边覆盖。
这一点虽然在本题中没有用到,但还是记在这里。

把 2 代入 1 就得到了 最大独立集 = 顶点数 - 最大匹配数。

题目链接

http://poj.org/problem?id=1466

AC代码

完全是套一个二分图匹配的模板,没必要贴代码了。。。

阅读全文
0 0
原创粉丝点击