话说noip之后终于发现了最小路径覆盖原来是二分图匹配(其实noip前考过但是由于我太菜不知道),其实我感觉真正的进步是从noip后,可惜noip后没有以前那种感觉了,不知道为什么(具体情况等我哪天有心情了写篇长篇大论)。
题目大意:
n个点的有向无环图,让你求它的最小路径覆盖(点可以重复)。
简略题解:
因为点可以重复,所以电和点的关系是可以传递的,所以就先传递闭包,也就是传说中的floyd(我说floyd强大吧,其实还有很多东西用得着它)。然后就变成了普通的最小路径覆盖问题了。
普通的最小路径覆盖:
我们把每个点拆成两个点,变成一个二分图。如果i和j有边那么连一条从i到j'的边,然后做最大匹配。求出的最大匹配数为ans,那么最小路径覆盖数就是n-ans。
因为每一个匹配也就是少用了一条路径。。体会一下这个思想,真的很神奇。
附代码: