「HDU-3488」Tour
二分图最大权匹配,有向环覆盖问题
题意
给定一个$n$个顶点、$m$条边的有向图,要求用一个或多个不相交的有向环覆盖所有的节点。问该有向环所有权值的总和最小为多少。
解法
因为路径由一个或多个不相交的有向环组成,对于匹配之后图中的每一点,其入度=出度=1,即拆点后二分图可以满足完备匹配,二分图中的边即为有向环中的边。
由于要求的答案为最小权匹配,初始化时需要将边的权值取负数,建立二分图,调用KM算法求其最佳匹配,取反即为所求解。
代码
1 |
|
「HDU-3488」Tour
二分图最大权匹配,有向环覆盖问题
给定一个$n$个顶点、$m$条边的有向图,要求用一个或多个不相交的有向环覆盖所有的节点。问该有向环所有权值的总和最小为多少。
因为路径由一个或多个不相交的有向环组成,对于匹配之后图中的每一点,其入度=出度=1,即拆点后二分图可以满足完备匹配,二分图中的边即为有向环中的边。
由于要求的答案为最小权匹配,初始化时需要将边的权值取负数,建立二分图,调用KM算法求其最佳匹配,取反即为所求解。
1 | #include <cstdio> |