zoukankan      html  css  js  c++  java
  • cf 543 D. Road Improvement

    (懒得想了,,又是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=0,f=1; char ch=getchar();
    11     while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();}
    12     while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();}
    13     return x*f;
    14 }
    15 const int mod=1e9+7;
    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]=1;
    22     for (int i=0; i<G[x].size(); i++)
    23     {
    24         int v=G[x][i];
    25         if (v==fa) {L[x].push_back(1); R[x].push_back(1); continue;}
    26         dfsdown(v,x);
    27         L[x].push_back(dp[v]+1);
    28         R[x].push_back(dp[v]+1);
    29         dp[x]=dp[x]*(dp[v]+1)%mod;
    30     }
    31     for (int i=1; i<L[x].size(); i++) L[x][i]=L[x][i]*L[x][i-1]%mod;
    32     for (int i=R[x].size()-2;i>=0; i--) R[x][i]=R[x][i]*R[x][i+1]%mod;
    33 }
    34 void dfsup(int x, int fa, int val)
    35 {
    36     up[x]=val; LL tem;
    37     for (int i=0; i<G[x].size(); i++)
    38     {
    39         int v=G[x][i];
    40         tem=val;
    41         if (v==fa) continue;
    42         if (i>0) tem=tem*L[x][i-1]%mod;
    43         if (i<G[x].size()-1) tem=tem*R[x][i+1]%mod;
    44         dfsup(v,x,tem+1);
    45     }
    46 }
    47 int main()
    48 {
    49     n=ra();
    50     for (int i=2; i<=n; i++)
    51     {
    52         int x=ra();
    53         G[x].push_back(i); 
    54         G[i].push_back(x);
    55     }
    56     dfsdown(1,0); dfsup(1,0,1);
    57     for (int i=1; i<=n; i++)
    58         printf("%I64d ",up[i]*dp[i]%mod);
    59 }
  • 相关阅读:
    windbg常用命令
    Windbg双机调试环境配置(Windows7/Windows XP+VirtualBox/VMware+WDK7600)
    SVN使用说明文档
    JavaScript-浏览器兼容之客户端检测
    JavaScript-执行环境
    JavaScript-函数
    JavaScript-静态私有变量
    JavaScript-构造函数模式
    JavaScript 自执行函数剖析
    easyui如何在datagrid 每行增加超链接
  • 原文地址:https://www.cnblogs.com/ccd2333/p/6482412.html
Copyright © 2011-2022 走看看