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