Pku acm 1466 Girls and Boys数据结构题目解题报告(十七)---- 匈牙利算法求二分图的最大匹配
阅读本文前请先阅读我blog的另一篇文章:匈牙利算法求二分图的最大匹配(2008-4-12).
有了匈牙利算法的基础,该题就是一道非常简单的题目了:题目给出一些boy和girl,有一些人有罗曼史,比如A和B有罗曼史,那么B和A就有罗曼史,求最多有多少人,他们之间没有罗曼史,根据这样的规则构建一个二分图:boy和girl分两边,分别作为左右结点,根据规则如果有罗曼史就连接,否则不连接,求出最大匹配,N-max_number_of_couples/2即为要求的结果,因为比如A和B有罗曼史,那么B和A就有罗曼史,所以重复算了一次(在这种情况下A和B去掉一个即可)。
带有详细注释的代码可以在http://download.csdn.net/user/china8848/获得
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/china8848/archive/2008/04/29/2341908.aspx
Pku acm 3041 Asteroids 数据结构题目解题报告(十六)---- 匈牙利算法求二分图的最大匹配
阅读本文前请先阅读我blog的另一篇文章:匈牙利算法求二分图的最大匹配(2008-4-12).
题目给出一个矩阵,上面有敌人,每个子弹可以打出一横行或者一竖行,问最少用多少子弹消灭都有敌人,如:
X.X
.X.
.X.
x表示敌人,显然用两个子弹就可以解决所有敌人。
下面介绍一下二分图的最小点覆盖数:假如选了一个点就相当于覆盖了以它为端点的所有边,你需要选择最少的点来覆盖所有的边。König定理是一个二分图中很重要的定理,它的意思是,一个二分图中的最大匹配数等于这个图中的最小点覆盖数。
这样,我们可以构建一个这样的二分图,左右边的结点数分别是矩阵的行和列,然后有敌人的地方就连接上(例如第一行第一列有敌人,就连接左边的1和右边的1),这样,二分图中的每条边就代表一个敌人,我们找到最少的n个点,这n个点能覆盖二分图中的所有边,即是最小点覆盖数,根据König定理,一个二分图中的最大匹配数等于这个图中的最小点覆盖数,所以只要求这样一个二分图的最大二分匹配即可。
带有详细注释的代码可以在http://download.csdn.net/user/china8848/获得
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/china8848/archive/2008/04/12/2287875.aspx
Pku acm 2771 Guardian of Decency 数据结构题目解题报告(十五)---- 匈牙利算法求二分图的最大匹配
有了匈牙利算法的基础,该题就是一道非常简单的题目了:该题给出m个动物的地点,n个洞,还有速度和时间(其实就是给了距离),问m个动物最多能有几个在规定的时间里一规定的速度躲到洞里逃生,。典型的二分图匹配的问题,动物的位置为左边的结点,洞为右边的结点,如果他们的距离小于等于时间×速度,我们就认为他们是连接的,否则认为不连接,我们只要计算最大二分图匹配数,就是可以逃生的动物数,用总数减去匹配数就是不能逃生的,即为所求。
带有详细注释的代码可以在http://download.csdn.net/user/china8848/获得。
带有详细注释的代码可以在http://download.csdn.net/user/china8848/获得。