BZOJ1430: 小猴打架
【传送门:BZOJ1430】
简要题意:
给出n个点,求组成n-1条边且n个点为一棵树的情况数
题解:
prufer数列例题
具体请膜
根据prufer数列,可以得到n^(n-2)棵树,而每棵树的建树方法为(n-1)!,所以ans=n^(n-2)*(n-1)!
参考代码:
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<cstdlib> using namespace std; typedef long long LL; int main() { LL n; scanf("%lld",&n); LL t=1; for(LL i=1;i<=n-2;i++) { t=(t*n)%9999991; } //t棵树 for(int i=1;i<=n-1;i++) t=(t*i)%9999991; //t种建树方法 printf("%lld\n",t); return 0; }
渺渺时空,茫茫人海,与君相遇,幸甚幸甚