#P10007. 树异或价值
树异或价值
树异或价值
Problem Description
曾经有一棵 个节点的有根树,其根节点的编号为 。同时,小 有一个大小为 的数组 。 定义数组 的价值为:
$$\sum_{i=1}^n \sum_{j=1}^n (a_i \oplus a_j) \times dep_{\mathrm{LCA}(i,j)} $$相关定义解释:
- 表示按位异或。
- 表示 的深度,即 到根节点的路径上节点的数量。
- 表示 和 的最近公共祖先。 不幸的是,很多年之后小 忘记了数组 。但是他记得:
- , ,其中 是一个给定的常数。
- 在所有 种可能的 数组中,小 的 数组的价值是最大的。 小 并不满足于找到一个合法的 数组,他更想知道有多少种 数组能满足上述条件。答案可能很大,请输出其对 取模的结果。
Input
输入包含多组测试数据。 第一行包含一个整数 (),表示测试数据的组数。 对于每组测试数据, 第一行包含两个整数 , (),表示树与 数组的大小, 数组元素的上界。 第二行包含 个整数 (), 其中 表示树上节点 的父亲。
Output
对于每组测试数据,输出一行一个整数,表示合法 数组数量对 取模的结果。
Sample Input
1
3 3
1 1
Sample Output
216
Source
2024“钉耙编程”中国大学生算法设计超级联赛(9)