#L4911. 「POI2017 R1」破坏 Sabotage

「POI2017 R1」破坏 Sabotage

题目描述

题目译自 XXIV Olimpiada Informatyczna — I etap Sabotaż

在一个不便透露名称的组织里,上司与下属的关系可以用一棵树来表示——除了最高领导,每个人都有且仅有一个直属上司。员工按入职顺序编号,上司的编号总是小于下属。

监督委员会担心组织内部可能潜伏着破坏者,想挑起员工叛乱。为了防患于未然,他们希望保持员工的高昂士气(比如发奖金、办活动、买桌上足球桌)。士气用一个 0011 之间的实数 xx 表示。如果某个员工发现,自己(直接或间接)下属中有超过 xx 比例的人叛乱,他也会加入叛乱,并强迫所有直接和间接的下属跟随。破坏者是某个员工,会在某刻率先叛乱(但不强迫下属加入)。

委员会想知道,为了让叛乱最多影响 kk 名员工,士气的最小值是多少。请你写个程序帮他们算出来。


输入格式

输入第一行包含两个整数 nnkk (1kn500000)(1 \leq k \leq n \leq 500000),用空格分隔,分别表示员工总数和叛乱人数上限。员工编号从 11nn,最高领导为 11 号。

接下来的 n1n-1 行描述组织结构,第 ii 行有一个整数 pip_{i} (pii)(p_{i} \leq i),表示编号为 i+1i+1 的员工的直属上司是 pip_{i} 号员工。


输出格式

输出一行一个实数,表示所需的最小士气值。结果与正确答案相差小于 10610^{-6} 即视为正确。


样例

输入

9 3
1
1
2
2
2
3
7
3

输出

0.6666666667

士气低于 23\frac{2}{3} 时,若 88 号员工是破坏者,他叛乱后会导致 44 人(33, 77, 88, 99 号)叛乱,超过上限 33


附加样例

  • 领导加 99 个直属下属;
  • 2020 名员工的随机测试;
  • 500000500000 名员工,除最晚入职者外,每人有几个直属下属。

数据范围与提示

详细子任务附加限制及分值如下表所示。

子任务 附加限制 分值
1 n10n \leq 10 22
2 n1000n \leq 1000 10
3 k20k \leq 20 13
4 无附加限制 55