还是Prufer编码的应用。这次我们不再限制各个点的度数,那么在Prufer编码中每个位置都用N中选择,Prufer编码的种类就有n^(n-2)可能,再加上每棵树有(n-1)!的交友顺序,相乘就是答案了。
其实前者的n^(n-2)也叫做Cayley定理。
#include <cstdio>
#define rep(i, l, r) for(int i=l; i<=r; i++)
#define Q 9999991
int main()
{
int n; scanf("%d", &n); long long a=1;
rep(i, 1, n-2) a=(a*n)%Q;
rep(i, 1, n-1) a=(a*i)%Q;
printf("%lld", a);
return 0;
}
原文:http://www.cnblogs.com/NanoApe/p/4342723.html