Hdu 4661 树上拓扑序计数

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = ;
const int MAXM = ;
const int mod = 1e9 + ;
int to[MAXM << ], nxt[MAXM << ], Head[MAXN], ed = ;
inline void addedge(int u, int v) {
to[++ed] = v;
nxt[ed] = Head[u];
Head[u] = ed;
}
int T, n;
ll dp[MAXN], sz[MAXN];
ll fac[MAXN], inv[MAXN];
ll anser = ;
ll Qpow(ll a, ll b) {
ll ans = , base = a;
while (b != ) {
if (b & != ) {
ans *= base;
ans %= mod;
}
base *= base;
base %= mod;
b >>= 1LL;
}
return ans;
}
void init() {
fac[] = ;
for (ll i = ; i <= ; i++) {
fac[i] = fac[i - ] * i % mod;
}
for (int i = ; i <= ; i++) {
inv[i] = Qpow(fac[i], mod - );
}
}
void getsz(int x, int fa) {
sz[x] = ;
for (int v, i = Head[x]; i; i = nxt[i]) {
v = to[i];
if (v == fa) {
continue;
}
getsz(v, x);
sz[x] += sz[v];
}
return ;
}
void dp1(int x, int fa) {
dp[x] = ;
for (int v, i = Head[x]; i; i = nxt[i]) {
v = to[i];
if (v == fa) {
continue;
}
dp1(v, x);
dp[x] = ((dp[x] * dp[v]) % mod * inv[sz[v]]) % mod;
}
dp[x] = dp[x] * fac[sz[x] - ] % mod;
return ;
}
void dp2(int x, int fa) {
if (x != ) {
//dp[x] = dp[fa] * sz[x] % mod * inv[n - sz[x]] % mod;
dp[x] = dp[fa] * sz[x] % mod * Qpow(n - sz[x], mod - ) % mod;
anser = (anser + dp[x] * dp[x] % mod) % mod;
}
for (int v, i = Head[x]; i; i = nxt[i]) {
v = to[i];
if (v == fa) {
continue;
}
dp2(v, x);
}
return ;
}
int main() {
init();
int u, v;
scanf("%d", &T);
while (T--) {
anser = ;
scanf("%d", &n);
ed = ;
for (int i = ; i <= n; i++) {
Head[i] = ;
}
for (int i = ; i < n; i++) {
scanf("%d %d", &u, &v);
addedge(u, v), addedge(v, u);
}
getsz(, );
dp1(, );
anser = dp[] * dp[] % mod;
dp2(, );
anser += mod;
anser %= mod;
cout << anser << endl;
}
return ;
}
Hdu 4661 树上拓扑序计数的更多相关文章
- [ARC083F] Collecting Balls [建二分图+环套树定向+建拓扑图+树的拓扑序计数]
题面 [传送门](https://arc083.contest.atcoder.jp/tasks/arc083_d) 思路 这是一道真正的好题 第一步:转化模型 行列支配类的问题,常见做法就是把行和列 ...
- codevs1304 拓扑序计数
题目描述 Description 求一颗有根树/树形图的拓扑序个数. 输入描述 Input Description ...
- 「PKUWC2019」拓扑序计数(状压dp)
考场只打了 \(52\) 分暴力...\(ljc\) 跟我说了一下大致思路,我回去敲了敲. \(f[i]\) 表示状态为 \(i\) 时的方案数.我们用二进制 \(0/1\) 表示不选/选点 \(i\ ...
- HDU 4917 Permutation 拓扑排序的计数
题意: 一个有n个数的排列,给你一些位置上数字的大小关系.求合法的排列有多少种. 思路: 数字的大小关系可以看做是一条有向边,这样以每个位置当点,就可以把整个排列当做一张有向图.而且题目保证有解,所以 ...
- [十二省联考2019]字符串问题——后缀自动机+parent树优化建图+拓扑序DP+倍增
题目链接: [十二省联考2019]字符串问题 首先考虑最暴力的做法就是对于每个$B$串存一下它是哪些$A$串的前缀,然后按每组支配关系连边,做一遍拓扑序DP即可. 但即使忽略判断前缀的时间,光是连边的 ...
- HDU.5692 Snacks ( DFS序 线段树维护最大值 )
HDU.5692 Snacks ( DFS序 线段树维护最大值 ) 题意分析 给出一颗树,节点标号为0-n,每个节点有一定权值,并且规定0号为根节点.有两种操作:操作一为询问,给出一个节点x,求从0号 ...
- HDU 5638 Toposort 拓扑排序 优先队列
Toposort 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5638 Description There is a directed acycli ...
- hdu 5111 树上求交
hdu 5111 树上求交(树链剖分 + 主席树) 题意: 给出两棵树,大小分别为\(n1\),\(n2\), 树上的结点权值为\(weight_i\) 同一棵树上的结点权值各不相同,不同树上的结点权 ...
- 【BZOJ-3832】Rally 拓扑序 + 线段树 (神思路题!)
3832: [Poi2014]Rally Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 168 Solved: ...
随机推荐
- [MSCOCO] Ubuntu16.04下使用 tylin/coco-caption 评价 MSCOCO Caption(配置,及Demo运行)
Github链接:https://github.com/tylin/coco-caption Ubuntu版本信息 Linux内核版本号:Linux version 4.15.0-51-generic ...
- java 分布式实践
java 分布式实践 spring boot cloud实践 开源的全链路跟踪很多,比如 Spring Cloud Sleuth + Zipkin,国内有美团的 CAT 等等. 其目的就是当一个请求经 ...
- 324rfwrtg5gft8oywtfbserkufgs
324rfwrtg5gft8oywtfbserkufgs (tester.inf.nano)
- manjaro 给笔记本安装18.1系统时发现中文变成了方块字
解决方案: 1.连接网络,wifi/本地连接 2.打开终端 3.同步数据 如果是第一次,我们需要先同步本地数据包,先输入 sudo pacman -Syy 4.安装字体 sudo pacman -S ...
- 冲刺Noip2017模拟赛2 解题报告——五十岚芒果酱
题1 牛跑步(running) [题目描述] 新牛到部队,CG 要求它们每天早上搞晨跑,从 A 农场跑到 B 农场.从 A 农场到 B 农场中有 n- 个路口,分别标上号,A 农场为 号,B 农场为 ...
- WebSocket的简单概念
本文为简单入门,主要介绍了什么是WebSocket以及其优点. 一.什么是WebSocket WebSocket的出现使得浏览器具备了实时双向通讯的能力.WebSocket是HTML5开始提供的一种浏 ...
- PTA(Advanced Level)1037.Magic Coupon
The magic shop in Mars is offering some magic coupons. Each coupon has an integer N printed on it, m ...
- 转载:同一台电脑教你配置多个Tomcat的环境变量
装两个tomcat 分别是6.0和7.0 可想运行tomcat6.0 但是实际上却运行tomcat7.0 两个版本都是用解压缩包 其实就是不能运行tomcat6.0 只能运行7.0 两个环境变量都配置 ...
- Chrome浏览器控制台报 POST http://*** net::ERR_BLOCKED_BY_CLIENT
开发项目广告模块时,遇到前端提交的请求后台拿不到,好像被什么拦截了,查看了过滤器,拦截器都无错误,且请求也到不了拦截器,chrome浏览器报:ERR_BLOCKED_BY_CLIENT错误 搞腾一半天 ...
- Hystrix的概念
Netflix的 Hystrix 是一个帮助解决分布式系统交互时超时处理和容错的类库, 它同样拥有保护系统的能力. Hystrix的设计原则包括:资源隔离.熔断器.命令模 ...