#CF1916E. 快乐的大学生活

快乐的大学生活

E. 快乐的大学生活

每个测试点时间限制:1 秒
内存限制:512 兆字节

Egor 和他的朋友 Arseniy 即将中学毕业,很快就要进入大学。作为非常负责任的年轻人,他们已经开始为入学做准备。

首先,他们决定解决未来四年学习期间的住宿问题。在浏览大学网站后,他们发现大学宿舍可以表示为一棵以节点 11 为根的 有根树,共有 nn 个节点。树中每个节点代表一个 休息室,具有某种 活动类型 aia_i。两位朋友需要选择两个休息室(可以相同)来居住。他们相信,下面函数的值越大,他们的大学生活就越快乐:

$$f(u,v) = \operatorname{diff}(u, \operatorname{lca}(u,v)) \cdot \operatorname{diff}(v, \operatorname{lca}(u,v)) $$

请帮助 Egor 和 Arseniy 找到所有休息室对 (u,v)(u,v)f(u,v)f(u,v) 的最大值。

定义

  • diff(u,v)\operatorname{diff}(u,v) —— 从节点 uu 到节点 vv 的简单路径上 不同活动类型 的个数。
  • lca(u,v)\operatorname{lca}(u,v) —— 节点 pp,满足 ppuuvv 的祖先,且 pp 离根最远(即最近公共祖先)。

输入
每个测试点包含多个测试用例。第一行一个整数 tt1t1051 \le t \le 10^5)—— 测试用例个数。接下来是每个测试用例的描述。

每个测试用例的第一行一个整数 nn1n31051 \le n \le 3 \cdot 10^5)。
第二行包含 n1n-1 个整数 p2,p3,,pnp_2, p_3, \dots, p_n1pii11 \le p_i \le i-1),其中 pip_i 是节点 ii 的父节点。
第三行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ain1 \le a_i \le n),表示节点 ii 的活动类型编号。

保证所有测试用例的 nn 之和不超过 31053 \cdot 10^5

输出
对于每个测试用例,输出所有休息室对 (u,v)(u,v)f(u,v)f(u,v) 的最大值。

示例
输入

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

说明
考虑第四个测试用例,树的结构如下:

所有休息室都有颜色。相同颜色表示活动类型相同。考虑节点对 (11,12)(11,12),它们的 lca(11,12)=1\operatorname{lca}(11,12)=1。写出从 111111 的路径上的活动:[11,5,1,11][11,5,1,11],其中有 33 种不同的活动,所以 diff(11,1)=3\operatorname{diff}(11,1)=3。写出从 121211 的路径上的活动:[7,8,2,11][7,8,2,11],其中有 44 种不同的活动,所以 diff(12,1)=4\operatorname{diff}(12,1)=4。得到 f(11,12)=43=12f(11,12)=4 \cdot 3 = 12,这就是该树的答案。可以证明不可能得到更大的值。