一棵子树的每一个儿子相当于划分一个区间,同时这些区间一定要存在一个点连续(直接的儿子),因此每一棵树最多只有两个儿子存在子树,并且这两个儿子所分到的区间一定是该区间最左和最右两段,所以ans*=(son)!(没有儿子的点任意排列)*2(两棵子树可以选择最左和最右),注意根节点还有两种划分方式,但当n=1时没有

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 100005
4 #define mod 1000000007
5 struct ji{
6 int nex,to;
7 }edge[N<<1];
8 int E,t,n,x,y,ans,fac[N],head[N];
9 void add(int x,int y){
10 edge[E].nex=head[x];
11 edge[E].to=y;
12 head[x]=E++;
13 }
14 bool dfs(int k,int fa){
15 int s1=0,s2=0;
16 for(int i=head[k];i!=-1;i=edge[i].nex)
17 if (edge[i].to!=fa){
18 s1++;
19 s2+=dfs(edge[i].to,k);
20 }
21 if (s2>2)ans=0;
22 if (s2)ans=ans*2%mod;
23 ans=1LL*ans*fac[s1-s2]%mod;
24 return (s1>0);
25 }
26 int main(){
27 scanf("%d",&t);
28 fac[0]=1;
29 for(int i=1;i<N-4;i++)fac[i]=1LL*fac[i-1]*i%mod;
30 for(int ii=1;ii<=t;ii++){
31 scanf("%d",&n);
32 ans=2;
33 E=0;
34 for(int i=1;i<=n;i++)head[i]=-1;
35 for(int i=1;i<n;i++){
36 scanf("%d%d",&x,&y);
37 add(x,y);
38 add(y,x);
39 }
40 dfs(1,0);
41 if (n==1)ans=1;
42 printf("Case #%d: %d\n",ii,ans);
43 }
44 }

[hdu5379]Mahjong tree的更多相关文章

  1. [hdu5379 Mahjong tree]dfs计数

    题意:给n个节点的树编号1-n,一个节点唯一对应一种编号,要求编完号的树满足如下性质:所有节点的儿子的编号是连续的,对一棵子树,它包含的所有节点的编号也是连续的.连续的意思是把所有数排序后是一段连续的 ...

  2. 2015暑假多校联合---Mahjong tree(树上DP 、深搜)

    题目链接 http://acm.split.hdu.edu.cn/showproblem.php?pid=5379 Problem Description Little sun is an artis ...

  3. 【HDOJ 5379】 Mahjong tree

    [HDOJ 5379] Mahjong tree 往一颗树上标号 要求同一父亲节点的节点们标号连续 同一子树的节点们标号连续 问一共同拥有几种标法 画了一画 发现标号有二叉树的感觉 初始标号1~n 根 ...

  4. HDU 5379 Mahjong tree(dfs)

    题目链接:pid=5379">http://acm.hdu.edu.cn/showproblem.php? pid=5379 Problem Description Little su ...

  5. HDU 5379——Mahjong tree——————【搜索】

    Mahjong tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  6. HDU 5379 Mahjong tree(树的遍历&amp;组合数学)

    本文纯属原创,转载请注明出处.谢谢. http://blog.csdn.net/zip_fan 题目传送门:http://acm.hdu.edu.cn/showproblem.php? pid=537 ...

  7. Hdu 5379 Mahjong tree (dfs + 组合数)

    题目链接: Hdu 5379 Mahjong tree 题目描述: 给出一个有n个节点的树,以节点1为根节点.问在满足兄弟节点连续 以及 子树包含节点连续 的条件下,有多少种编号方案给树上的n个点编号 ...

  8. 2015 Multi-University Training Contest 7 hdu 5379 Mahjong tree

    Mahjong tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  9. Mahjong tree (hdu 5379 dfs)

    Mahjong tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Tot ...

随机推荐

  1. tomcat启动程序报错

    1.问题 23-Apr-2021 10:53:38.897 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.de ...

  2. FastAPI 学习之路(二)

    之前的文章已经介绍了如何安装,以及简单的使用,这篇文章呢,我们就不去分享如何安装对应的包了. 我们如何去编写呢,其实很简单,按照下面的步骤,一个简单的基于fastapi的接口就编写完毕. 首先:创建一 ...

  3. python和shell 取日期为今天的行

    按条件取行 todolist.txt是存储所有数据的地方,每次查看数据库显得麻烦. 在执行命令后,要在终端显示今日应作事项. 首先用linux 的shell脚本来实现该功能. grep指令可以在文件中 ...

  4. 在Vue&Element前端项目中,对于字典列表的显示处理

    在很多项目开发中,我们为了使用方便,一般都会封装一些自定义组件来简化界面的显示处理,例如参照字典的下拉列表显示,是我们项目中经常用到的功能之一,本篇随笔介绍在Vue&Element前端项目中如 ...

  5. SpringCloud微服务实战——搭建企业级开发框架(五):数据库持久化集成MySql+Druid+MyBatis-Plus

      在引入相关数据库持久化相关依赖库之前,我们可以考虑到,当我们因业务开发需要,引入各种各样的依赖库时,Jar包冲突是我们必须面对的一个问题,Spring为了解决这些Jar包的冲突,推出了各种bom, ...

  6. Redis:学习笔记-02

    Redis:学习笔记-02 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 4. 事物 Redis 事务本 ...

  7. [对对子队]会议记录5.15(Scrum Meeting2)

    今天已完成的工作 吴昭邦 ​ 工作内容:衔接循环指令系统,搭建第4关 ​ 相关issue:实现循环组件 ​ 相关签入:feat: 将模型加入第四关 第四关可以顺利通过 何瑞 ​ 工作内容:衔接循环指令 ...

  8. Intellij IDEA 2021.2.3 最新版免费激活教程(可激活至 2099 年,亲测有效)

    ​ 申明,本教程 Intellij IDEA 最新版破解.激活码均收集与网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除.如条件允许,建议大家购买正版. 本教程更新于:2021 年 10 月 ...

  9. js模板引擎laytpl的使用

    在我们实际的开发过程中,可能会遇到使用ajax去后台获取一堆的数据,然后动态的渲染到页面上.比如:去后台获取一个list集合,然后将数据以表格的形式展示在页面上.另外一种可能发生的情况就是页面上需要批 ...

  10. springboot多配置环境

    在我们的开发过程中,经常会有多套配置环境,比如开发环境(dev),测试环境(test),生产环境(prod)等,在各个环境中我们需要使用到不同的配置,那么在springboot中是如何做到的呢? 1. ...