#icpc2016autumne. [icpc2016autumn_e]Similarity of Subtrees

[icpc2016autumn_e]Similarity of Subtrees

问题描述

在根树中,通过递归应用以下规则来定义节点深度:

  • 根节点的深度为0。
  • 深度为dd的父节点的子节点的深度为d+1d+1

对于任意非负整数dd,如果S(T,d)S(T, d)表示具有深度dd的树TT的节点数,则仅当对于所有非负整数ddS(T,d)S(T, d)等于S(T,d)S(T', d)时,根树TTTT'是相似的。

给定一个有NN个节点的根树TTTT的节点从1到NN编号。节点1是根节点。设TiT_i是以节点ii为根的子树。你的任务是编写一个程序,计算满足TiT_iTjT_j相似且i<ji < j的对(i,j)(i, j)的数量。

输入

输入包含一个测试用例。

NN
a1a_1 b1b_1
...
aN1a_{N-1} bN1b_{N-1}

第一行包含一个整数NN(1N100,0001 \le N \le 100{,}000),表示树中的节点数。接下来的N1N-1行给出了分支的信息:其中第ii行包含aia_ibib_i,表示节点aia_i是节点bib_i的父节点。 (1ai,biN1 \le a_i, b_i \le N, aibia_i \ne b_i) 根节点的编号为1。保证给定的图是一棵根树,即除了节点1以外的每个节点都有唯一的父节点,并且图是连通的。

输出

输出满足以根节点xx和根节点yy为根的子树相似且x<yx < y的节点对(x,y)(x, y)的数量。

样例输入1

5
1 2
1 3
1 4
1 5```

### 样例输出1

```plain
6```

### 样例输入2

```plain
6
1 2
2 3
3 4
1 5
5 6```

### 样例输出2

```plain
2```

### 样例输入3

```plain
13
1 2
1 3
2 4
2 5
3 6
3 7
4 8
4 9
6 10
7 11
8 12
11 13```

### 样例输出3

```plain
14```