U660011 树的同构对统计
题目描述
树是一种常见的数据结构。我们把 $N$ 个点,$N-1$ 条边的连通无向图称为树。
对于两个树 $T_1$ 和 $T_2$,如果能够把树 $T_1$ 的所有点重新标号,使得树 $T_1$ 和树 $T_2$ 的结构完全相同(即邻接关系一致),那么这两个树是**同构**的。
注意:本题中给出的树虽然以“父亲数组”的形式输入(隐含了一个根),但在判定同构时,我们将其视为**无根树**。也就是说,只要通过改变根节点或重新标号能使两棵树形态一致,它们即为同构。
现在,给你 $M$ 个无根树。请你统计有多少对序数 $(i, j)$ 满足 $1 \le i < j \le M$,且第 $i$ 棵树与第 $j$ 棵树同构。
输入格式
第一行,一个整数 $M$,表示树的个数。
接下来 $M$ 行,每行包含若干个整数,描述一棵树:
- 第一个整数 $N$,表示该树的点数。
- 接下来 $N$ 个整数,依次表示编号为 $1$ 到 $N$ 的每个点的父亲结点的编号。
- 根节点的父亲结点编号为 $0$。
输出格式
输出一行一个整数,表示满足同构条件的树的对数。
说明/提示
### 样例解释
- **第 1 棵树**:结构为链状 $4-2-1-3$。
- **第 2 棵树**:结构为链状 $1-2-3-4$。与第 1 棵树同构。
- **第 3 棵树**:结构为“菊花图”,中心为 1,连接 2, 3, 4。与其它树不同构。
- **第 4 棵树**:结构为链状 $1-2-3-4$。与第 1、2 棵树同构。
同构的集合为 $\{1, 2, 4\}$ 和 $\{3\}$。
满足条件的对 $(i, j)$ 为:$(1, 2), (1, 4), (2, 4)$。共 3 对。
### 数据范围
对于 $100\%$ 的数据,保证 $1 \le N, M \le 10^5$。