#CF1918F. 树上的毛毛虫
树上的毛毛虫
F. 树上的毛毛虫
时间限制:每个测试 秒
内存限制:每个测试 MB
毛毛虫决定访问树上的每一个节点。最初,它位于根节点。
树以根为节点 的有根树形式给出。每次爬到相邻节点需要花费 分钟。
树下方有一张蹦床。如果毛毛虫脱离树木落到蹦床上,它将在 秒内回到树的根节点。但蹦床已经老旧,最多只能承受 次毛毛虫的坠落。
毛毛虫访问树上所有节点所需的最短时间是多少?
更形式化地说,我们需要找到访问树上所有节点所需的最短时间,毛毛虫从根节点(节点 )出发,可以使用两种方式移动。
- 沿着一条边爬行到一个相邻节点:耗时 分钟。
- 传送回根节点:不消耗时间,但不会访问新节点。
第二种方式(传送)最多可以使用 次。毛毛虫可以在任意节点结束旅程。
输入
第一行包含两个整数:()——树的节点数,以及 ()——传送回根节点的最大次数。
第二行包含 个整数 ()——节点 在树中的父节点;节点 是根节点。
输出
输出一行一个整数——访问树上所有节点所需的最少分钟数。
样例
输入
8 1
1 1 2 2 4 3 3
输出
9
输入
4 0
4 4 1
输出
4