#C2022I. 为最后的盛大时代献上启幕
为最后的盛大时代献上启幕
是的,这是最后一道题了。
恭喜你来到这里。
题目描述
这是一棵树。
树上记录着时代。时间与时间层层连接,构成了层峦叠嶂的时代。
然而,我们眼中的时代是被描绘而锚定的时代。假如说真实的树是,那如今的树就是通过如下方式得到的:
- 首先,在完整的上找到一个结点,这个结点满足它的最大子树是所有结点的最大子树组成的集合中最小的,称其为时代的。时代是无情的,如果有多个满足条件的结点,它会任意选择一个结点;
- 然后,将作为根,对它的所有子树分别找到它们的,然后将这些结点与的连接。
- 接下来,将每一棵子树看作新的,重复之前的过程。
这个过程将一直持续下去,直到所有结点都成为某棵树的之后,这个连接起来的新树就是我们看到的时代。
真正的过去早已面目全非。
我们早已不知道的模样。但我们仍然在努力还原它,还原最后的真相。对于每一棵能锚定成我们所看到的树的真实的树,它的不同长度的时代都很重要。因此,我们需要知道对于所有可能的真实的树,它们不同长度的简单路径的数量分别求和的结果。形式化地,设能经过上述过程重构出我们所看到的树的集合为 ,一棵树 的所有简单路径集合为,求对于任意 , 的值,其中
$$ans_i=\sum_{\forall T'\in S}\sum_{P\in U_{T'}}[len(P)=i] $$表示路径的长度,方括号为 Iverson bracket,即方括号内的条件为真则其值为 ,否则为 。
输入格式
输入第一行包含两个整数 和 ,表示结点个数和我们所看到的树的根结点。
接下来 行,每行两个整数 ,,表示在我们所看到的树上,编号为 的结点和编号为 的结点被一条边所连接。
输出
输出包含一行 个整数 ,表示长度为的路径数量对 取模的结果。
样例
2 2
1 2
1
5 1
1 4
1 3
1 5
5 2
8 8 4 0
11 1
1 2
2 3
2 5
2 6
3 4
1 7
7 8
8 9
7 10
10 11
2000 2240 2000 1592 1296 976 576 256 64 0
数据范围
数据点编号 | 特殊性质 | |
---|---|---|
1 | ||
2 | ||
3 | ||
4 | ||
5 | ||
6 | ||
7 | ||
8 | ||
9 | ||
10 | ||
11 | ||
12 | ||
13 | ||
14 | ||
15 | ||
16 | ||
17 | ||
18 | ||
19 | ||
20 | ||
21 | ||
22 | ||
23 | ||
24 | ||
25 | ||
26 | ||
27 | ||
28 | ||
29 | ||
30 | ||
31 | ||
32 | ||
33 | ||
34 |
特殊性质:这棵树没有特殊性质。
特殊性质:这棵树的其中一棵的生成方式如以下代码所示:
for(int i=1;i<=n;++i)mp[i]=i;
std::random_shuffle(mp+1,mp+n+1);
for(int i=2;i<=n;++i)add(mp[randint(1,i-1)],mp[i]);
其中randint(l,r)
表示在内均匀随机地选择一个整数,add(x,y)
表示给和连边。
特殊性质:这棵树的其中一棵是一条链。
特殊性质:这棵树的其中一棵有一个度数为的点。
对于的数据,树的结点编号为,。
本题的每个测试点均为6分。给定的没有可用于解题的规律。
相关
在下列比赛中: