A89706.「2017 山东一轮集训 Day3」第二题
省选/NOI-
通过率:0%
时间限制:1.00s
内存限制:512MB
题目描述
对于一棵有根树,定义一个点 u 的 k − 子树为 u 的子树中距离 u 不超过 k 的部分。注意,假如 u 的子树中不存在距离 u 为 k 的点,则 u 的 k − 子树是不存在的。
定义两棵子树是相同的,当且仅当不考虑点的标号时,他们的形态是相同的(儿子的顺序也需要考虑)。给定一棵 n 个点,点的标号在 [1,n],以 1 为根的有根树。问最大的 k,使得存在两个点 u=v,满足 u 的 k− 子树与 v 的 k − 子树相同。
输入格式
第一行输入一个正整数 n。
接下来读入 n 个部分,第 i 个部分描述点 i 的儿子,且以顺序给出。
每个部分首先读入一个整数 x,代表儿子个数。接下来 x 个整数,代表从左到右儿子的标号。
输出格式
输出一个整数 k,代表最大的合法的 k。
输入输出样例
输入#1
8 1 2 2 3 4 0 1 5 2 6 7 0 1 8 0
输出#1
3
说明/提示
对于 20% 的数据,n≤100;
对于 40% 的数据,n≤2000;
对于 60% 的数据,n≤30000;
对于 100% 的数据,n≤100000,保证给出的树是合法的。