题目 30243

有根树同构分类

查看题解 ↗GitHub ↗如何评测
题号
30243
时间限制
10000 ms
内存限制
1024 MB
标签
树图论
来源
Library Checker (yosupo06) - rooted_tree_isomorphism_classification

【题目描述】

给定一棵有 NN 个顶点的有根树。树的根是顶点 00。顶点 ii 的父亲是 pip_i。通过为每个顶点选作根,你将得到 NN 棵有根子树。请按有根树同构关系将它们分类。

输出互不相同的子树个数 KK 以及一个整数序列 a0,a1,…,aN−1a_0, a_1, \ldots, a_{N-1},满足以下条件:

  • 0≤ai<K0 \leq a_i < K
  • ai=aja_i = a_j 当且仅当以 ii 和 jj 为根的两棵子树同构。

【输入】

文本
$N$
$p_1$ $p_2$ $\ldots$ $p_{N-1}$

【输出】

文本
$K$
$a_0$ $a_1$ $\ldots$ $a_{N-1}$

若有多组解,输出任意一组即可。

【输入样例】

文本
11
0 1 1 2 2 0 6 6 8 8

【输出样例】

文本
4
3 2 1 0 0 0 2 0 1 0 0

【输入样例2】

文本
5
0 1 2 3

【输出样例2】

文本
5
4 3 2 1 0

【数据范围】

  • 1≤N≤5000001 \leq N \leq 500000
  • 0≤pi<i0 \leq p_i < i

【来源】

Library Checker(yosupo06) rooted_tree_isomorphism_classification

本题为 special judge(输出任意合法解),暂不可本地评测。

数据下载

题目 30243 的公开数据

正在读取文件列表…

常用命令

题目 30243 的 ROJ 命令

以下命令默认使用全局安装的 ROJ Skill,请在终端中直接执行;如果修改过 AGENT_HOME,请将命令中的 ~/.agents 替换为对应目录。