#icpc2014springa. [icpc2014spring_a]Breadth-First Search by Foxpower

[icpc2014spring_a]Breadth-First Search by Foxpower

题目描述

小狐狸Ciel骑自行车去了JAG王国,但她忘记了停自行车的地方。因此,在返回家之前,她需要从自行车停放区域搜索自行车。

停车区域被形成为一棵无权重的根树TT,包含nn个顶点,编号从1到nn。每个顶点都有一个停放一个或多个自行车的空间。Ciel认为她把自行车停在了顶点1附近,所以她决定从那里开始进行广度优先搜索。也就是说,她按照距离顶点1递增的顺序搜索顶点。如果多个顶点具有相同的距离,她按照它们的父节点搜索顺序来确定优先级。如果多个顶点具有相同的父节点,她首先搜索顶点编号最小的顶点。

与计算机不同的是,她不能通过随机访问来到达下一个顶点。因此,如果她在到达顶点jj之前到达顶点ii,她需要走过顶点ii和顶点jj之间的距离。由于使用小狐狸力量的BFS可能需要很长时间,所以她请你计算从顶点1开始,在最坏情况下的总移动距离。


输入

输入数据格式如下。

nn
p_2p\_2 p_3p\_3 p_4p\_4 cdots\\cdots p_np\_n

第一行包含一个整数nn (1lenle1051 \\le n \\le 10^5),表示无权重根树TT上的顶点数。第二行包含n1n-1个整数p_ip\_i (1lep_i<i1 \\le p\_i < i),表示顶点ii的父节点。顶点1是根节点,因此p_1p\_1不存在。

输出

在一行中打印最坏情况下的总移动距离。


示例输入1

4
1 1 2```

### 示例输出1

```plain
6```

* * *

### 示例输入2

```plain
4
1 1 3```

### 示例输出2

```plain
4```

* * *

### 示例输入3

```plain
11
1 1 3 3 2 4 1 3 2 9```

### 示例输出3

```plain
25```

* * *

### 来源名称

[Japan Alumni Group Spring Contest 2014](http://acm-icpc.aitea.net/index.php?2013%2FPractice%2F%BD%D5%A5%B3%A5%F3%A5%C6%A5%B9%A5%C8%2F%B0%C6%C6%E2)

* * *