显然在最优解中,添加的边都是从$1$出发的. 这个图是一个环套树的结构,对于树的部分,显然叶子节点必须加边. 因此可以自底向上确定树中哪些节点需要加边,同时得到$1$到环上每个点的距离. 对于每个环,首先求出哪些点距离超过了$k$,并预处理出每个点之后最近的未满足的点的位置. 然后枚举起点,显然起点必须未满足,然后向右$k$步$k$步跳,贪心覆盖,对于长度为$L$的环,每次求答案的时间复杂度为$O(\frac{L}{k})$. 注意到每个环中每$k$个起点中必然存在一个最优解,因此只需要枚举$k…