#P15371. [UOI2026] Color the Tree

    ID: 14586 传统题 300ms 512MiB 尝试: 2 已通过: 1 难度: 7 上传者: 标签>CF2200树形DP数学动态规划模拟构造组合数学递归

[UOI2026] Color the Tree

题目描述

给定一棵有 nn 个顶点的有根树,树根为顶点 11

对于每个顶点 vv,你需要选择一个数字 cvc_v,其值为 1122。这样的数字选择方案称为该树的一种涂色

对于每个顶点 vv,考虑树中从顶点 11 到顶点 vv 的唯一路径。令 svs_v 为该路径上所有顶点对应的数字 cuc_u 之和,包括顶点 11vv 自身。

如果所有 s1,s2,,sns_1, s_2, \ldots, s_n 两两不同(即没有两个值相等),则称该涂色是正确的

请你计算这棵树正确的涂色方案数量。

由于答案可能很大,请将其对 109+710^9 + 7 取模后输出。

输入格式

第一行包含一个整数 tt (1t104)(1 \le t \le 10^4) —— 测试数据的组数。

每组测试数据由两行组成。

每组数据的第一行包含一个整数 nn (2n2105)(2 \le n \le 2 \cdot 10^5) —— 树中顶点的个数。

第二行包含 n1n-1 个整数 p2,p3,,pnp_2, p_3, \ldots, p_n (1pi<i)(1 \le p_i < i),其中 pip_i 是顶点 ii 的父顶点。

这意味着对于每个 ii22nn,顶点 pip_i 与顶点 ii 之间有一条边,且顶点 pip_i 离根更近。

保证所有测试数据的 nn 之和不超过 21052 \cdot 10^5

输出格式

对于每组测试数据,输出一个整数 —— 该树正确的涂色方案数量对 109+710^9 + 7 取模的结果。

输入输出样例 #1

输入 #1

1
3
1 1

输出 #1

4

输入输出样例 #2

输入 #2

1
4
1 2 3

输出 #2

16

输入输出样例 #3

输入 #3

1
7
1 1 2 2 3 3

输出 #3

0

说明/提示

在第一个样例中,顶点 2233 是根的子顶点。

以下涂色方案是正确的:{1,1,2}\{1, 1, 2\}{1,2,1}\{1, 2, 1\}{2,1,2}\{2, 1, 2\}{2,2,1}\{2, 2, 1\}

因此答案为 44

计分

一个顶点 vv 的子顶点是指满足 pu=vp_u = v 的顶点 uu

叶子是指没有子顶点的顶点。

树中两个顶点之间的距离是指它们之间唯一路径上的边数。

  • 1111 分):n10n \le 10t=1t = 1
  • 66 分):每个顶点至多有一个子顶点,且 t=1t = 1
  • 77 分):每个顶点到根的距离不超过 22 条边,且 t=1t = 1
  • 88 分):树中至多有一个顶点恰好拥有两个子顶点;其他所有顶点至多有一个子顶点,且 t=1t = 1
  • 1212 分):只有根可以拥有多于一个子顶点,且 t=1t = 1
  • 1313 分):叶子的数量不超过 33,且 t=1t = 1
  • 1111 分):恰好拥有两个子顶点的顶点数量不超过 2020,且 t=1t = 1
  • 1515 分):n1000n \le 1000
  • 1717 分):无额外限制。

翻译由 DeepSeek V4 Pro 完成