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)
Total Submission(s): 388 Accepted Submission(s): 125
Thought for a long time, finally he decides to use the mahjong to decorate the tree.
His mahjong is strange because all of the mahjong tiles had a distinct index.(Little sun has only n mahjong tiles, and the mahjong tiles indexed from 1 to n.)
He put the mahjong tiles on the vertexs of the tree.
As is known to all, little sun is an artist. So he want to decorate the tree as beautiful as possible.
His decoration rules are as follows:
(1)Place exact one mahjong tile on each vertex.
(2)The mahjong tiles' index must be continues which are placed on the son vertexs of a vertex.
(3)The mahjong tiles' index must be continues which are placed on the vertexs of any subtrees.
Now he want to know that he can obtain how many different beautiful mahjong tree using these rules, because of the answer can be very large, you need output the answer modulo 1e9 + 7.
For each test case, the first line contains an integers n. (1 <= n <= 100000)
And the next n - 1 lines, each line contains two integers ui and vi, which describes an edge of the tree, and vertex 1 is the root of the tree.
#include <iostream>
#include <cstdio>
#include <vector>
#include <cstring>
#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
const int maxn = ;
typedef long long LL;
const LL mod = 1e9 + ;
vector<int>g[maxn];
int son[maxn];
LL fac[maxn] = {};
LL dfs(int u,int fa){
son[u] = ;
LL ret = ;
int a = ,b = ;
for(int i = g[u].size()-; i >= ; --i){
if(g[u][i] == fa) continue;
ret = ret*dfs(g[u][i],u)%mod;
if(son[g[u][i]] > ) b++;
else a++;
if(!ret || b > ) return ;
son[u] += son[g[u][i]];
}
if(b) ret = ret*%mod;
ret = ret*fac[a]%mod;
return ret;
}
void init(){
for(int i = ; i < maxn; ++i)
fac[i] = i*fac[i-]%mod;
}
int main(){
int kase,n,u,v,cs = ;
init();
scanf("%d",&kase);
while(kase--){
scanf("%d",&n);
for(int i = ; i < maxn; ++i) {g[i].clear();son[i] = ;}
for(int i = ; i < n; ++i){
scanf("%d%d",&u,&v);
g[u].push_back(v);
g[v].push_back(u);
}
LL ret = dfs(,-);
if(son[] > ) ret = ret*%mod;
printf("Case #%d: %I64d\n",cs++,ret);
}
return ;
}
2015 Multi-University Training Contest 7 hdu 5379 Mahjong tree的更多相关文章
- 2015多校第7场 HDU 5379 Mahjong tree 构造,DFS
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5379 题意:一颗n个节点n-1条边的树,现在要给每个节点标号(1~n),要求:(1)每一层的兄弟节点的 ...
- Hdu 5379 Mahjong tree (dfs + 组合数)
题目链接: Hdu 5379 Mahjong tree 题目描述: 给出一个有n个节点的树,以节点1为根节点.问在满足兄弟节点连续 以及 子树包含节点连续 的条件下,有多少种编号方案给树上的n个点编号 ...
- HDU 5379 Mahjong tree(dfs)
题目链接:pid=5379">http://acm.hdu.edu.cn/showproblem.php? pid=5379 Problem Description Little su ...
- HDU 5379 Mahjong tree(树的遍历&组合数学)
本文纯属原创,转载请注明出处.谢谢. http://blog.csdn.net/zip_fan 题目传送门:http://acm.hdu.edu.cn/showproblem.php? pid=537 ...
- HDU 5379 Mahjong tree
题意:在一棵有n个节点的树上放编号从1到n的麻将,要求每个点的儿子节点之间的编号连续,每棵子树内的编号连续. 解法:手推一组样例之后就可以得到如下结论然后从根节点一边讨论一边搜就好了. 当一个节点只有 ...
- HDU 5379——Mahjong tree——————【搜索】
Mahjong tree Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- HDU 5379 Mahjong tree dfs+组合数学
题意:给你一棵树来分配号码,要求是兄弟节点连续并且每一棵子树连续. 思路:因为要求兄弟和子树都是连续的,所以自己打下草稿就可以发现如果一个节点有3个或3个以上的非叶子结点,那么就无论如何也不能达到目的 ...
- 2015 Multi-University Training Contest 8 hdu 5390 tree
tree Time Limit: 8000ms Memory Limit: 262144KB This problem will be judged on HDU. Original ID: 5390 ...
- 2015 Multi-University Training Contest 8 hdu 5383 Yu-Gi-Oh!
Yu-Gi-Oh! Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on HDU. Original ID: ...
随机推荐
- spring data JPA使用quartz定时器的具体实现
第一步.在pom.xml中的配置 <!--quartz--> <dependency> <groupId>org.quartz-scheduler</grou ...
- selenium+java实现浏览器前进、后退和刷新
- PHP生成二维码的2种方式
二维码的用处俺也就不说了,看一下用PHP生成的二维码吧. 利用谷歌提供的API 生成二维码,如今非常多国外站点都提供了这类API 看下代码吧<=======================> ...
- c 语言函数可变參数的处理
/************************************************************************* > File Name: va_list.c ...
- HTML5 Canvas 获取网页的像素值。
我之前在网上看过一个插件叫做出JScolor 颜色拾取器 说白了就是通过1*1PX的DOM设置颜色值通过JS来获取当前鼠标点击位置DOM的颜色值. 自从HTML5 画布出来之后.就有更好的方法来 ...
- hdu(2846)Repository
Problem Description When you go shopping, you can search in repository for avalible merchandises by ...
- angularjs1-4 事件指令
<div ng-app="myApp"> <div ng-controller="firstController"> <div n ...
- 0x21 剪枝
这一章真是心态崩,剪枝太玄学啦,特别是那个搜索顺序我靠真的... poj1011 枚举答案,搜索记录当前到第几根木棒. 剪枝:1.从大到小排序 2.排除等效,这个感觉还行,就是木棒按大小顺序进去,去除 ...
- SAN和NAS
SAN针对海量.面向数据块的数据传输,而NAS则提供文件级的数据访问功能. SAN和NAS都基于开放的.业界标准的网络协议:用于SAN的光纤通道协议和用于NAS的网络协议(如TCP/IP). SAN的 ...
- 17.QT键盘
mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> 5 #include <Q ...