博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
牛客国庆集训派对Day3 B Tree
阅读量:7049 次
发布时间:2019-06-28

本文共 2280 字,大约阅读时间需要 7 分钟。

思路:

树形dp

注意0不存在逆元,任何一个数乘以0就变成0了,就没有价值浪,所以要暴力转移

代码:

#pragma GCC optimize(2)#pragma GCC optimize(3)#pragma GCC optimize(4)#include
using namespace std;#define fi first#define se second#define pi acos(-1.0)#define LL long long//#define mp make_pair#define pb push_back#define ls rt<<1, l, m#define rs rt<<1|1, m+1, r#define ULL unsigned LL#define pll pair
#define pli pair
#define pii pair
#define piii pair
#define mem(a, b) memset(a, b, sizeof(a))#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);//headconst int N = 1e6 + 10;const int MOD = 1e9 + 7;struct edge { int to; int next;}edge[N*2];LL cnt[N], _cnt[N];int head[N], tot = 0;void add_edge(int u, int v) { edge[tot].to = v; edge[tot].next = head[u]; head[u] = tot++;}LL q_pow(LL n, LL k) { LL ans = 1; while(k) { if(k&1) ans = (ans * n) % MOD; n = (n * n) % MOD; k >>= 1; } return ans;}void dfs(int o, int u) { cnt[u] = 1; for (int i = head[u]; ~i; i = edge[i].next) { int v = edge[i].to; if(v != o) { dfs(u, v); cnt[u] = (cnt[u] * (cnt[v]+1)) % MOD; } }}void DFS(int o, int u) { for (int i = head[u]; ~i; i = edge[i].next) { int v = edge[i].to; if(v != o) { LL t = 1; if(cnt[v]+1 != MOD) t = (cnt[u] * q_pow(cnt[v]+1, MOD-2)) % MOD; else { for (int i = head[u]; ~i; i = edge[i].next) { int vv = edge[i].to; if(vv != o && vv != v) { t = (t * (cnt[vv]+1)) % MOD; } } } _cnt[v] = (_cnt[u]*t + 1) % MOD; DFS(u, v); } }}int main() { int n, u, v; scanf("%d", &n); for (int i = 1; i <= n; i++) head[i] = -1; for (int i = 1; i < n; i++) { scanf("%d %d", &u, &v); add_edge(u, v); add_edge(v, u); } dfs(1, 1); _cnt[1] = 1; DFS(1, 1); for (int i = 1; i <= n; i++) { printf("%lld\n", (cnt[i] * _cnt[i]) % MOD); } return 0;}

 

转载于:https://www.cnblogs.com/widsom/p/9742345.html

你可能感兴趣的文章
Windows Server群集感知更新(CAU)-中
查看>>
敏捷个人:内容框架之执行力
查看>>
扩展GridView控件——为内容项添加拖放及分组功能
查看>>
如何使用Orchard搭建敏捷个人的网站(2)
查看>>
Win7系统下共享文件夹后共享文件夹上的小锁图标取消方法
查看>>
Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析(2)...
查看>>
Object类的用法(三)
查看>>
【VMware虚拟化解决方案】VMware私有云的“五步走”
查看>>
后置条件和对象固定
查看>>
WinForm(C#)倒计时(年月日时分秒)
查看>>
【VMware虚拟化解决方案】构建VMware私有云 实现ITaaS
查看>>
通过Redis的Pub/Sub实现对服务器群的监控管理
查看>>
搜寻Linux软件实用指南
查看>>
Flink 案例整合
查看>>
3D图形处理库
查看>>
unity 实现物体破碎效果的一些方法 - 细雨淅淅
查看>>
更快的提高队员开发效率的方式
查看>>
理解为什么要使用Ioc
查看>>
property 中的strong 与weak
查看>>
cancel_delayed_work和flush_scheduled_work【转】
查看>>