#CF1916E. 快乐的大学生活
快乐的大学生活
E. 快乐的大学生活
每个测试点时间限制:1 秒
内存限制:512 兆字节
Egor 和他的朋友 Arseniy 即将中学毕业,很快就要进入大学。作为非常负责任的年轻人,他们已经开始为入学做准备。
首先,他们决定解决未来四年学习期间的住宿问题。在浏览大学网站后,他们发现大学宿舍可以表示为一棵以节点 为根的 有根树,共有 个节点。树中每个节点代表一个 休息室,具有某种 活动类型 。两位朋友需要选择两个休息室(可以相同)来居住。他们相信,下面函数的值越大,他们的大学生活就越快乐:
$$f(u,v) = \operatorname{diff}(u, \operatorname{lca}(u,v)) \cdot \operatorname{diff}(v, \operatorname{lca}(u,v)) $$请帮助 Egor 和 Arseniy 找到所有休息室对 中 的最大值。
定义
- —— 从节点 到节点 的简单路径上 不同活动类型 的个数。
- —— 节点 ,满足 是 和 的祖先,且 离根最远(即最近公共祖先)。
输入
每个测试点包含多个测试用例。第一行一个整数 ()—— 测试用例个数。接下来是每个测试用例的描述。
每个测试用例的第一行一个整数 ()。
第二行包含 个整数 (),其中 是节点 的父节点。
第三行包含 个整数 (),表示节点 的活动类型编号。
保证所有测试用例的 之和不超过 。
输出
对于每个测试用例,输出所有休息室对 中 的最大值。
示例
输入
4
2
1
1 2
7
1 1 2 2 3 3
6 5 2 3 6 5 6
13
1 1 1 2 2 2 3 3 4 5 6 6
2 2 2 1 4 9 7 2 5 2 1 11 2
12
1 1 1 2 2 3 4 4 7 7 6
11 2 1 11 12 8 5 8 8 5 11 7
输出
2
9
9
12
说明
考虑第四个测试用例,树的结构如下:
所有休息室都有颜色。相同颜色表示活动类型相同。考虑节点对 ,它们的 。写出从 到 的路径上的活动:,其中有 种不同的活动,所以 。写出从 到 的路径上的活动:,其中有 种不同的活动,所以 。得到 ,这就是该树的答案。可以证明不可能得到更大的值。