1430: 小猴打架
题目:传送门
简要题意:
n只互不相识的猴子打架,打架之后就两两之间连边(表示已经相互认识),只有不认识(朋友的朋友都是朋友)的两只猴子才会打架。最后所有的猴子都会连成一棵树,也就是经过n-1次打架,求不同的打架方案数。
题解:
我们需要一个强大的方法:prufer序列。。。
这个东西很牛逼!!!
简单来说就是把一颗n个节点的无根树,转换为n-2的一个序列
序列和树之间两两可互相转化,且是一一对应的。
具体%%%神犇:prufer序列
思考niang小时,代码niang分钟:
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long LL;
const LL mod=9999991LL;
int n;
int main()
{
LL ans=;
scanf("%d",&n);
for(int i=;i<=n-;i++)ans=ans*n%mod;
for(LL i=;i<n;i++)ans=ans*i%mod;
printf("%lld\n",ans);
return ;
}