(懒得想了,,又是DP)

  1. #include<bits/stdc++.h>
  2. #define N 200005
  3. #define LL long long
  4. #define inf 0x3f3f3f3f
  5. #define ls tr[x][0]
  6. #define rs tr[x][1]
  7. using namespace std;
  8. inline int ra()
  9. {
  10. int x=,f=; char ch=getchar();
  11. while (ch<'' || ch>'') {if (ch=='-') f=-; ch=getchar();}
  12. while (ch>='' && ch<='') {x=x*+ch-''; ch=getchar();}
  13. return x*f;
  14. }
  15. const int mod=1e9+;
  16. vector<LL > G[N],L[N],R[N];
  17. LL dp[N],up[N];
  18. int n;
  19. void dfsdown(int x, int fa)
  20. {
  21. dp[x]=;
  22. for (int i=; i<G[x].size(); i++)
  23. {
  24. int v=G[x][i];
  25. if (v==fa) {L[x].push_back(); R[x].push_back(); continue;}
  26. dfsdown(v,x);
  27. L[x].push_back(dp[v]+);
  28. R[x].push_back(dp[v]+);
  29. dp[x]=dp[x]*(dp[v]+)%mod;
  30. }
  31. for (int i=; i<L[x].size(); i++) L[x][i]=L[x][i]*L[x][i-]%mod;
  32. for (int i=R[x].size()-;i>=; i--) R[x][i]=R[x][i]*R[x][i+]%mod;
  33. }
  34. void dfsup(int x, int fa, int val)
  35. {
  36. up[x]=val; LL tem;
  37. for (int i=; i<G[x].size(); i++)
  38. {
  39. int v=G[x][i];
  40. tem=val;
  41. if (v==fa) continue;
  42. if (i>) tem=tem*L[x][i-]%mod;
  43. if (i<G[x].size()-) tem=tem*R[x][i+]%mod;
  44. dfsup(v,x,tem+);
  45. }
  46. }
  47. int main()
  48. {
  49. n=ra();
  50. for (int i=; i<=n; i++)
  51. {
  52. int x=ra();
  53. G[x].push_back(i);
  54. G[i].push_back(x);
  55. }
  56. dfsdown(,); dfsup(,,);
  57. for (int i=; i<=n; i++)
  58. printf("%I64d ",up[i]*dp[i]%mod);
  59. }

cf 543 D. Road Improvement的更多相关文章

  1. VK Cup 2016 - Qualification Round 2 C. Road Improvement dfs

    C. Road Improvement 题目连接: http://www.codeforces.com/contest/638/problem/C Description In Berland the ...

  2. Codeforces 543D. Road Improvement (树dp + 乘法逆元)

    题目链接:http://codeforces.com/contest/543/problem/D 给你一棵树,初始所有的边都是坏的,要你修复若干边.指定一个root,所有的点到root最多只有一个坏边 ...

  3. Codeforces 543D Road Improvement

    http://codeforces.com/contest/543/problem/D 题意: 给定n个点的树 问: 一开始全是黑边,对于以i为根时,把树边白染色,使得任意点走到根的路径上不超过一条黑 ...

  4. CodeForces 543D:Road Improvement

    题目:http://codeforces.com/problemset/problem/543/D 题意:给你一棵树,一开始边都是0,可以使任意的边变成1,对于每一个根节点求使得它到其他任一点的路径上 ...

  5. Codeforces Round #302 (Div. 1) D - Road Improvement 树形dp

    D - Road Improvemen 思路:0没有逆元!!!! 不能直接除,要求前缀积和后缀积!!! #include<bits/stdc++.h> #define LL long lo ...

  6. Codeforces 543D Road Improvement(树形DP + 乘法逆元)

    题目大概说给一棵树,树的边一开始都是损坏的,要修复一些边,修复完后要满足各个点到根的路径上最多只有一条坏的边,现在以各个点为根分别求出修复边的方案数,其结果模1000000007. 不难联想到这题和H ...

  7. Codeforces 543D Road Improvement(DP)

    题目链接 Solution 比较明显的树形DP模型. 首先可以先用一次DFS求出以1为根时,sum[i](以i为子树的根时,满足要求的子树的个数). 考虑将根从i变换到它的儿子j时,sum[i]产生的 ...

  8. [Codeforces543D]Road Improvement

    Problem 刚开始每条边都是坏的,现在要选取一个点使得其他点到这个点的路径上最多只有一条坏路,问至少要修好多少条边 Solution 如果以1为根,那么是个简单的树形DP 设根从u转移到v,那么u ...

  9. [CF543D]Road Improvement

    题目大意:给定一个无根树,给每条边黑白染色,求出每个点为根时,其他点到根的路径上至多有一条黑边的染色方案数,模$1e9+7$. 题解:树形$DP$不难想到,记$f_u$为以$1$为根时,以$u$为根的 ...

随机推荐

  1. unittest---unittest数据驱动(ddt)

    在做测试的时候,有些地方无论是接口还是UI只是参数数据的输入不一样,操作过程是一样的.重复去写操作过程会增加代码量,我们可以通过参数化的方式解决这个问题,也叫做数据驱动,我们通过python做参数化的 ...

  2. unity优化-CPU(网上整理)

    CPU方面性能考虑:引擎和代码渲染模块.动画模块.物理模块.ui模块.粒子模块.加载模块.GC模块最重要的是渲染模块.UI模块和加载模块1.渲染模块主要是:场景.物体和特效的渲染a.降低Draw ca ...

  3. Python学习笔记之面向对象

    下面是初步总结的Python的面向对象的参数定义,后面会逐渐完善面向对象的相关知识.

  4. 一 注册功能&登录功能,权限拦截

    注册功能: 前端JSP:提供表单注册信息以及访问路径,发送请求到Strus2. Struts2 : 通过模型驱动接收并封装User对象,Spring依赖注入(无参构造+setter方法)获取业务层Us ...

  5. mysql 通过localhost可以连接IP连接不上

    因为MySQL默认没开 所以需要手动设置 开MySQL启远程连接的功能,在MySQL服务器控制台上执行以下命令: 设置权限: grant all privileges on *.* to 用户名@&q ...

  6. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表单:静态控件

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. 第1节 kafka消息队列:1、kafka基本介绍以及与传统消息队列的对比

    1. Kafka介绍 l  Apache Kafka是一个开源消息系统,由Scala写成.是由Apache软件基金会开发的一个开源消息系统项目. l  Kafka最初是由LinkedIn开发,并于20 ...

  8. ZB本地设置

    (1)web.config <!--本地服务器--> <add name="connectionString" connectionString="mG ...

  9. 十六、JSONObject与JSONArray使用-不刷新页面做回写显示

    需要导入:json-lib-2.2.2-.jar包 1.json:就是一个键对应一个值,超级简单的一对一关系.对于json嵌套,只要记住符号“:”前是键,符号后是值大括号成对找. String arr ...

  10. GIMP

    1. 认识GIMP 2. GIMP与Photoshop的对比 3. GIMP官方手册教程 4. 2本GIMP的外文书下载 5. 2个外部入门教程 6. 其他相关软件 1. 认识GIMP GIMP是可用 ...