生成函数.
对于一张连通的图,若它的补图也是连通图,根据定义,当 $n>1$ 时,它们都不是好图.而不连通的图的补图一定是连通的,于是可以得出,当 $n>1$ 时,连通好图和不连通好图是可以用补图关系一一对应的,两者数目相等.
设 $f_i$ 表示 $i$ 个点的好图的数目, $g_i$ 表示 $i$ 个点连通好图的数目,则有 $f_0=f_1=g_1=1,f_i=2\cdot g_i(i>1)$ .
考虑 $f_i$ 的生成函数 $F(x)$ ,枚举大小为 $k$ 的连通块数目,在无标号下可以得出
$$
F=\prod_{k\ge 1}(1-x^k)^{-g_k}\\
\ln(F)=\sum_{k\ge 1}-g_k\cdot \ln(1-x^k) \\
\frac{F’}{F}=\sum_{k\ge 1} g_k\cdot \frac{kx^{k-1}}{1-x^k}\\
[x^n]F’=[x^n] (F\cdot \sum_{k\ge 1} g_k\cdot \frac{kx^{k-1}}{1-x^k})\\
(n+1)f_{n+1}=\sum_{i=0}^n f_i\cdot [x^{n-i}]\sum_{k\ge1} g_k\cdot \frac{kx^{k-1}}{1-x^k}\\
(n+1)f_{n+1}=\sum_{i=0}^n f_i\cdot\sum_{k\ge 1,k|n-i+1}g_k\cdot k\\
\frac{n+1} 2f_{n+1}=\sum_{i=0}^n f_i\cdot\sum_{1\le k<n+1,k|n-i+1}g_k\cdot k
$$
依次枚举 $n$ ,过程中暴力维护每个 $\sum g_k\cdot k$ ,时间复杂度 $O(n^2)$ .
1 | //%std |