#P5448. [THUPC 2018] 好图计数

[THUPC 2018] 好图计数

Description

我们归纳定义一个无向简单图是好的

  1. 一个单点是好的。

  2. 若干个好的图分别作为联通块所形成的图是好的。

  3. 一个好的图的补图是好的。

给定一个正整数 nn

nn 个点的本质不同的好的图的数量对质数 PP 取模的结果。(这里的 PP 是一个常数,具体见【输入格式】)

两个好的图的被认为是本质不同的,当且仅当无论如何将一个图重标号,它都不能与另一个图完全相同。

Input Format

输入包含多组数据,第一行 22 个用空格隔开的整数 T,PT,P 分别表示数据组数、以及模数。接下来依次描述每组数据,对于每组数据:

  • 一行一个整数 nn,表示希望统计数目的好的图的节点数。

Output Format

对于每组数据,输出 11 行:

  • 一个整数,表示 nn 个节点的好的图的数目对 PP 取模的结果。
2 233
3
4
4
10

Hint

样例解释

下面是 33 个点的所有好的图:

数据范围

保证 T233T\leq 233n23333n\leq 23333229<P<2302^{29} < P < 2^{30} 且保证 PP 为质数。

提示

能够通过本题的算法的时间复杂度可能比你想象的要糟糕一些、也可能比你想象的要优秀一些。

版权信息

来自 2018 清华大学学生程序设计竞赛暨高校邀请赛(THUPC2018),感谢 Pony.ai 对此次比赛的支持。

题解等资源可在 https://github.com/wangyurzee7/THUPC2018 查看。