Type: Default File IO: worm 5000ms 512MiB

捉虫

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

小 Y 的朋友小 N 带她去森林里野餐。

她们在森林中遇到了一棵树,树由 nn 个节点和 n−1n-1 条边组成,且任意两个节点之间都能通过若干条边互相到达。

不过她们发现树上有很多虫子,于是她们决定清除这些虫子。

最开始,每个节点上都有虫子,她们可以选择一个节点,并在上面放置 kk 只啄木鸟。

随后,她们可以进行若干次操作,每次操作可以选择一只啄木鸟,设其所在位置为 uu,然后她们可以选择一个在树上和 uu 有边相连的节点 vv,并且把这只啄木鸟移动到 vv 上。

任何时候只要某只啄木鸟到达树的某个节点,那么这个节点上的虫子就会被清除(包括初始选择的节点)。

每次移动完成后,如果一个没有啄木鸟的节点上的虫子已被清除,且该节点与至少一个有虫子的节点相邻,那么该节点会立刻重新出现虫子。该规则会反复触发,直到不存在满足条件的节点,她们的目标是使某一时刻所有节点上都没有虫子。

她们定义这棵树的“危险度”为:清除所有虫子所需要的啄木鸟数量的最小值,即初始放置的啄木鸟数量 kk 的最小值。

野餐结束后,小 Y 开始研究不同形态的树,由于她只有 mm 只啄木鸟,所以她只关心危险度不超过 mm 的所有树。

具体来说,对于每个 1≤k≤m1\le k\le m,小 Y 想让你帮她求出有多少种含有 nn 个节点且危险度恰为 kk 的无标号无根树,由于这个数可能很大,所以她还会告诉你一个质数 PP,你只要输出答案对 PP 取模后的结果即可。

无标号无根树只区分树的结构,不区分节点编号。若两棵树的节点之间存在一个双射,使得第一棵树中的两个节点有边相连,当且仅当它们在第二棵树中的对应节点有边相连,则这两棵树被视为同一种树,否则视为不同的树。

输入格式

从文件 worm.in 中读入数据。

第一行三个整数 n,m,Pn,m,P,表示树的节点数量,需要统计的最大危险度,以及答案所取的模数。

输出格式

输出到文件 worm.out 中。

输出一行 mm 个整数。第 kk(1≤k≤m1\le k\le m)个整数表示含有 nn 个节点,且危险度恰为 kk 的无标号无根树数量对 PP 取模后的结果。

样例 1 输入

6 3 998244353

样例 1 输出

1 5 0

样例 1 解释

只有 66 个点的链的“危险度”为 11,其他 55 种树的危险度都为 22。

样例 2

见选手目录下的 worm/worm2.in 与 worm/worm2.ans。

该样例满足子任务 11 的约束条件。

样例 3

见选手目录下的 worm/worm3.in 与 worm/worm3.ans。

该样例满足子任务 22 的约束条件。

样例 4

见选手目录下的 worm/worm4.in 与 worm/worm4.ans。

该样例满足子任务 33 的约束条件。

样例 5

见选手目录下的 worm/worm5.in 与 worm/worm5.ans。

该样例满足子任务 44 的约束条件。

样例 6

见选手目录下的 worm/worm6.in 与 worm/worm6.ans。

该样例满足子任务 55 的约束条件。

样例 7

见选手目录下的 worm/worm7.in 与 worm/worm7.ans。

该样例满足子任务 66 的约束条件。

样例 8

见选手目录下的 worm/worm8.in 与 worm/worm8.ans。

该样例满足子任务 77 的约束条件。

样例 9

见选手目录下的 worm/worm9.in 与 worm/worm9.ans。

该样例满足子任务 88 的约束条件。

样例 10

见选手目录下的 worm/worm10.in 与 worm/worm10.ans。

该样例满足子任务 99 的约束条件。

数据范围

对于所有测试数据,保证 1≤n,m≤10001\le n,m\le 1000,108≤P≤10910^8\le P\le 10^9 且 PP 是素数。

子任务编号 nn mm 特殊性质 分值
11 ≤8\le 8 ≤1000\le 1000 特殊性质 A 55
22 ≤30\le 30 ^ ^ 1515
33 ≤500\le 500 ≤1\le 1 55
44 ^ ≤2\le 2 1515
55 ≤3\le 3 1010
66 ≤100\le 100 ≤1000\le 1000 2020
77 ≤500\le 500 ^ 特殊性质 B 1010
88 无特殊性质
99 ≤1000\le 1000 ^

特殊性质 A:P=998244353P=998244353。

特殊性质 B:nn 为奇数。

本题开启所有合理的子任务依赖。

本题中,你可能需要较为快速地处理取模操作,下面给出一份 Barrett Reduction 的参考代码:

namespace FastMod {
typedef unsigned long long ull;
typedef __uint128_t uLL;
ull b; uLL m;
inline void init(const ull &B) { b=B,m=(uLL(1)<<64)/B; }
inline ull mod(const ull &a) {
	ull r=a-((m*a)>>64)*b;
	return r>=b?r-b:r;
}
}

NOIp 2026 模拟赛 3

Not Attended
Status
Done
Rule
OI
Problem
4
Start at
2026-8-19 8:00
End at
2026-8-19 12:30
Duration
4.5 hour(s)
Host
Partic.
32