zoukankan      html  css  js  c++  java
  • L2-020. 功夫传人*

    L2-020. 功夫传人

    参考博客

     1 #include<vector>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 vector<int> child[100005];      //储存徒弟的容器
     6 
     7 double z,r,sum;
     8 double val[100005];        //判断是否得道者和储存得道者倍数
     9 
    10 
    11 void f(int id,double w)  //表示第id个人,w表示传承下来的功力值
    12 {
    13     if(val[id]){      //当倍数不为0,即是得道者,乘以倍数加到sum
    14         sum=sum+w*val[id];
    15     }else{
    16         for(int i=0;i<child[id].size();i++){
    17             f(child[id][i],w*r);              //把每个徒弟往下递归,传授给徒弟的功力值为w*r
    18         }
    19     }
    20     return ;
    21 }
    22 int main()
    23 {
    24     memset(val,0,sizeof(val));     //初始化部分
    25     sum=0;
    26     
    27     int n,m,k;
    28     scanf("%d %lf %lf",&n,&z,&r);
    29     r=(100-r)/100;                //题目为削弱r%,所以直接替换掉了
    30     
    31     for (int i = 0; i < n; i++) {
    32         scanf("%d",&m);          //m来判断是否为得道者
    33         
    34         if (!m) {                //得道者,所以倍数储存到val[]里
    35             scanf("%lf",&val[i]);
    36         }else{
    37             for (int j = 0; j <m; j++) {    //不是得道者,依序储存到child[]容器里
    38                 scanf("%d",&k);
    39                 child[i].push_back(k);
    40             }
    41         }
    42     }
    43     
    44     f(0,z);       //递归遍历,从0号祖师爷开始,功力为z
    45     
    46     printf("%d
    ",(int)sum);     //保留整数输出
    47 
    48     return 0;
    49 }
  • 相关阅读:
    a==null和a.equals("null")的区别
    PHP_EOL换行符
    mysql 重启
    异或的用法
    so easy(并查集+unordered_map)
    牛客练习赛51 C 勾股定理
    Period II
    Simpsons’ Hidden Talents
    POJ-1961 Period
    poj-2406 Power Strings
  • 原文地址:https://www.cnblogs.com/Annetree/p/8680736.html
Copyright © 2011-2022 走看看