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;
}
原文地址:https://www.cnblogs.com/NanoApe/p/4342723.html