bzoj1430: 小猴打架(prufer序列)

Posted CHerish_OI

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj1430: 小猴打架(prufer序列)相关的知识,希望对你有一定的参考价值。

1430: 小猴打架

题目:传送门


 

 

简要题意:

   n只互不相识的猴子打架,打架之后就两两之间连边(表示已经相互认识),只有不认识(朋友的朋友都是朋友)的两只猴子才会打架。最后所有的猴子都会连成一棵树,也就是经过n-1次打架,求不同的打架方案数。


 

 

题解:

   我们需要一个强大的方法:prufer序列。。。

   这个东西很牛逼!!!

   简单来说就是把一颗n个节点的无根树,转换为n-2的一个序列

   序列和树之间两两可互相转化,且是一一对应的。

   具体%%%神犇:prufer序列 


 

 

思考niang小时,代码niang分钟:

 1 #include<cstdio>
 2 #include<cstring>
 3 using namespace std;
 4 typedef long long LL;
 5 const LL mod=9999991LL;
 6 int n;
 7 int main()
 8 {
 9     LL ans=1;
10     scanf("%d",&n);
11     for(int i=1;i<=n-2;i++)ans=ans*n%mod;
12     for(LL i=1;i<n;i++)ans=ans*i%mod;
13     printf("%lld\\n",ans);
14     return 0;
15 }

 

以上是关于bzoj1430: 小猴打架(prufer序列)的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ 1430 1430: 小猴打架 (Prufer数列)

BZOJ1430: 小猴打架

bzoj 1430: 小猴打架

[BZOJ1430] 小猴打架 (数学)

bzoj1430 小猴打架

bzoj1430 小猴打架