#P650. 树的覆盖

树的覆盖

题目描述

给定一棵有 nn 个结点的树,11 号点为这棵树的根。请计算,这个棵树的最小覆盖集大小,并统计有多少最小覆盖集。

所谓覆盖集,是该树的点构成的集合,对树上每一条边,至少有一个顶点属于该集合。某个特定覆盖集的大小就是该集合中点的数量。

由于覆盖集数量可能很大,输出数量数模 1,000,000,0071,000,000,007 的余数即可。

输入格式

  • 第一行:单个整数表示 nn
  • 第二行:n1n-1 个整数表示 p2p_2pnp_npip_i 表示 ii 号点父亲的编号,保证有 1pi<i1\leq p_i<i

输出格式

  • 第一行:单个整数:表示最小覆盖集的大小。
  • 第二行:单个整数:表示最小覆盖集的数量模 1,000,000,0071,000,000,007 的余数。
4
1 2 3
2
3

样例解释 1

最小覆盖集为{1 3}、{2 4}、{2 3}

6
1 1 1 2 3
3
5

样例解释 2

{1 2 3} {1 5 3} {1 2 6} {1 5 6} {2 3 4}

数据范围

  • 对于 30%30\% 的数据, n20n\leq 20
  • 对于 60%60\% 的数据, n5,000n\leq 5,000
  • 对于 100%100\% 的数据, 1n200,0001\leq n\leq 200,000