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$。