bzoj#P2601. [Jsoi2011]同分异构体计数

[Jsoi2011]同分异构体计数

题目描述

Antonio 最近对有机化学比较感兴趣,他想请你帮助他快速计算出某种烃类的同分异构体的数目。为了表述方便,我们作出如下定义:

环烷烃: 具有 nn 个碳原子的环烷烃可以表示成一张具有 nn 个顶点 nn 条边的无向连通简单图(基环+外向树)。每个顶点的度数不超过 44

M-环烷烃:至多有 mm 个顶点在环上的环烷烃。(注意环上至少有 33 个顶点,因为任意两个顶点之间至多只能有 11 条边)。

同构:假设结构 A 和结构 B 均具有 nn 个碳原子,A 和 B 同构当且仅当能够对 A 和 B 中的每个碳原子都按照 1n1-n 编号,使得对于编号为 v1v_1v2v_2 的两个碳原子,他们在 A 中存在边相连当且仅当他们在 B 中存在边相连。(换言之,A 和 B 对应的图同构)。

现在,给出 n,mn,m,Antonio 希望你帮助他统计有多少种互不同构的含有 nn 个碳原子的 M-环烷烃。由于这个数量可能很大,你只需要输出它对 pp 的余数。(pp 是一个素数)。在本题中,我们不考虑某结构在化学上是否能够稳定存在,也不考虑其他的异构方式。

输入格式

输入文件只有一行,用空格隔开的三个整数 n,m,pn,m,p

输出格式

输出文件有且仅有一行,表示具有 nn 个碳原子的互不同构的 M-环烷烃的数量,对 pp 的余数。

样例输入

10 10 66103

样例输出

476

数据规模与约定

对于 100%100\% 的数据,3n10003\le n\le 10003m503\le m\le 50104p2×10910^4\le p\le 2 \times 10^9mnm \le n ,且 pp 为素数。