BZOJ-1430 小猴打架
还是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; }