PA2019 Grafy
Grafy
求有多少个 \(n\) 个顶点的有标号无向简单图,满足每个点入度、出度均为 \(2\),且无重边、自环。答案对 \(P\) 取模。
\(3\le n\le 500\)
Solution
考虑一张左部、右部均有 \(2n\) 个点的二分图,下标 \(0\sim (2n-1)\),左部表示 \(i\) 的入度,右部表示 \(i\) 的出度。
我们要计数完美匹配方案,记为排列 \(p\),其中 \(p_i\) 表示左部 \(i\) 匹配右部 \(p_i\)。一张合法的图对应 \(2^{2n}\) 个完美匹配。
不合法的排列有两种形式:
- 自环,在排列中表现为 \(\lfloor \frac{p_{2i}}{2}\rfloor =i\) 或 \(\lfloor \frac{p_{2i+1}}{2}\rfloor =i\);
- 重边,在排列中表现为 $\lfloor \frac{p_{2i}}{2}\rfloor = \lfloor \frac{p_{2i+1}}{2}\rfloor $。
因此,答案容斥信息可表达为:
\[\prod\limits_{i=0}^{n-1}\left( 1- {\color{red}[p_{2i},p_{2i+1}重边]}-{\color{green}[p_{2i}自环]}-{\color{green}{[p_{2i+1}自环]}}+2\color{blue}{[p_{2i},p_{2i+1}均自环]}\right)
\]
注意到绿色区域的两贡献是相同的,因此可以对称计算。
我们枚举选择 \(i\) 个 \(\color{blue}{[p_{2i},p_{2i+1}均自环]}\),\(j\) 个 \({\color{green}[p_{2i}自环]}\) 或 \(\color{green}{[p_{2i+1}自环]}\),\(k\) 个 \({\color{red}[p_{2i},p_{2i+1}重边]}\),则:
\[ans=\frac{1}{2^{2n}}\sum_{i+j+k\le n} {\color{cyan}{\binom{n}{i,j,k,n-i-j-k}2^i(-1)^{j}(-1)^k}}\cdot \color{pink}2^i \cdot 2^j 2^j\cdot (n-i-j)^{\underline{k}}2^k\cdot (2n-2i-j-2k)!
\]
青色部分是容斥系数,接下来分别是四部分的贡献。化简得:
\[ans=\frac{n!}{2^{2n}}\sum_{i+j+k\le n} 2^{2i+2j+k}(-1)^{j+k}\frac{(n-i-j)!(2n-2i-j-2k)!}{i!j!k!(n-i-j-k)!^2}
\]
时间复杂度 \(\mathcal O(n^3)\)。
Bonus:本题存在\(\mathcal O(n)\) 的整式递推做法。

浙公网安备 33010602011771号