题解 P5807 【Which Dreamed It/【模板】BEST 定理】
juju527
·
·
题解
前置知识
Best 定理
对于一个有向欧拉图,记点 i 的出度为 \text{out}_i,其本质不同的欧拉回路个数为:
T\prod_{i}(out_i-1)!
显然,$T$ 可以有矩阵树定理求得。
宣传下:[矩阵树定理学习笔记](https://www.cnblogs.com/juju527/p/15183866.html)。
##### 证明
记 $s$ 为起点。
对于一条欧拉回路,我们把所有点的最后一条出边拿出来去除掉 $s$ 的出边,
一定形成一棵以 $s$ 为根的内向树。
原因是如果成环,由于所有点出度等于入度,环上最后走的一条边到达的位置仍会有一条出边未走,矛盾。
此时其他所有非树边随便排列,考虑构造一组方案。
至于从根出发的非树边有 $out_s$ 条,全部重排应该是 $out_s!$。
但考虑从任意一条边开始,由于最终走了一条回路,所以会造成一次轮换。
最后一条本质相同的的回路将被算 $out_s$ 次,最终除掉即可。
从 $s$ 出发按选择的出边顺序走,最后走树边由于出度等于入度,一定能走完所有边。
由于所有点的最后一条出边中一定有欧拉回路顺序中的最后一条边,该条边一定回到 $s$,得到回路。
### $\texttt{Solution}
模板题,题目中要求的答案即为有向图欧拉回路计数。
值得注意的是,其为并未去除循环同构的欧拉回路。
我们得到答案后应乘上 out_1,原因在上述证明中。
边界情况是注意 Best 定理是在欧拉图上使用的,
应特判不是欧拉图的情况。
时间复杂度 O(Tn^3)。
code