题解:
现在终于还算是明白了。
首先将边的存在性定义为两种颜色,这样就变成了一个Polya的经典问题。
但是如何考虑边的置换群呢?
我们首先考虑点的置换群。
点的置换显然有$O(n!)$种,但我们可以按照每个循环的大小进行分组,最终发现组数还是能够接受的。
考虑一个组的点置换,我们最终将方案数乘以这个组内有多少置换就行了。这一步可以用简单的组合数学知识来解决。
现在考虑如何将点置换转化为边置换,即将所有边划分为若干组可以轮换的边。
考虑那种两个端点在同一个点循环的边,则如果点循环的大小为$n$,我们可以分为差值分别为$1,2,...,\lfloor\frac{n}{2}\rfloor$的若干组。
考虑那种两个端点在不同的点循环的边,如果两个点循环的大小分别为$n,m$,脑补一下可以发现会出现$gcd(n,m)$组边。
这样的话,问题大概就得到了解决了。
代码: