T716395 [CFCOI-R4-T2] 移除结点
题目背景
$\text{tree.cpp},1 \text{ s},512 \text{ MiB}$
题目描述
给定一棵 $n$ 个结点的有根树,结点编号 $1 \sim n$,根节点为 $1$ 号结点。
你要以某种顺序移除这棵树中的 $n-1$ 个非根结点,最终只剩下根结点。
移除一个结点 $u$ 的步骤为:
1. 记 $u$ 结点的父亲结点为 $f$,对于 $u$ 的所有儿子结点 $v$,添加边 $(v,f)$ 并删除边 $(v,u)$。
2. 删除边 $(u,f)$,并删除结点 $u$。
一个结点 $u$ 的深度为 $u$ 至根节点路径上的边数。整棵树的深度为所有结点深度的最大值。
记第 $i$ 次移除结点后树的深度为 $d_i$,最小化 $D=\sum\limits_{i=1}^{n-1} d_i$ 的值。
输入格式
第 $1$ 行,一个整数 $n$。
第 $2 \sim n$ 行,第 $i$ 行输入结点 $i$ 的父亲 $f_i$。
输出格式
仅一行,表示 $D$ 最小值。
说明/提示
$1 \le n \le 2 \times 10^5$。