CF1918F Caterpillar on a Tree

题目描述

毛毛虫决定访问树上的每一个节点。最初,它坐在根节点上。 这棵树表示为以 $1$ 号节点为根的有根树。每次爬到相邻的节点,毛毛虫需要 $1$ 分钟。 树下有一个蹦床。如果毛毛虫从树上跳下落到蹦床上,它会在 $0$ 秒内回到树的根节点。但蹦床很旧,最多只能承受 $k$ 次毛毛虫的跳跃。 毛毛虫访问完树上所有节点所需的最短时间是多少? 更正式地说,我们需要求出毛毛虫从根节点(节点 $1$)出发,使用以下两种方式移动,访问所有节点所需的最短时间。 1. 沿树边爬到相邻节点:耗时 $1$ 分钟。 2. 传送回根节点:耗时 $0$ 分钟,且不会访问新的节点。 第二种方式(传送)最多只能使用 $k$ 次。毛毛虫可以在任意节点结束旅程。

输入格式

输入的第一行包含两个整数:$n$($2 \le n \le 2 \cdot 10^5$)——树的节点数,$k$($0 \le k \le 10^9$)——最多允许传送回根节点的次数。 第二行包含 $n-1$ 个整数 $p_2, p_3, \ldots, p_n$($1 \le p_i \le n$)——分别表示节点 $2, 3, \ldots, n$ 的父节点编号;节点 $1$ 是根节点。

输出格式

输出一个整数,表示访问完所有节点所需的最短分钟数。

说明/提示

下图展示了第一个测试样例中用 9 分钟遍历整棵树的一种方式。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1918F/77179a13af1b28ec2237ee92c15cdb8a4a8e0b93.png) 由 ChatGPT 4.1 翻译