题意:给定一张图和一些需要被覆盖的点,相邻的两点可以被一条直线覆盖。
思路:建立二分图,v1是图中的一些需要被覆盖的点,v2是另外一些需要被覆盖的点,其中v1与v2不相交,并且v1或v2中不包含相邻的点,那么问题即是求最少路径覆盖了!
这里由于图是无向的,所以可以v1=v2,而所求得的最大匹配数除以2就等于实际匹配数。
但我们是求最少路径覆盖,根据定理:最少路径覆盖=顶点数-最大匹配数。假设我们在所建图中求得的最大匹配为k,顶点数为n。那么ans=n-k/2。
参考代码:
题意:给定一张图和一些需要被覆盖的点,相邻的两点可以被一条直线覆盖。
思路:建立二分图,v1是图中的一些需要被覆盖的点,v2是另外一些需要被覆盖的点,其中v1与v2不相交,并且v1或v2中不包含相邻的点,那么问题即是求最少路径覆盖了!
这里由于图是无向的,所以可以v1=v2,而所求得的最大匹配数除以2就等于实际匹配数。
但我们是求最少路径覆盖,根据定理:最少路径覆盖=顶点数-最大匹配数。假设我们在所建图中求得的最大匹配为k,顶点数为n。那么ans=n-k/2。
参考代码: