1079 Total Sales of Supply Chain (25 分)(树的遍历)

给出一颗销售供应的树,树根唯一。在树根处货物的价格为p,然后从根节点开始没往结点走一层,该层的货物价格将会在父节点的价格上增加r%。给出每个叶节点的货物量求出他们的价格之和

#include<bits/stdc++.h>

using namespace std;
const int N=1e5+10;
struct node
{
    int data;
    vector<int>child;
}s[N];
double price,rate;
double sum=0;
void dfs(int v,int step)
{
    //cout<<v<<" "<<step<<endl;
    if(s[v].child.size()==0){
        sum+=s[v].data*1.0*pow(1+rate/100.0,step);
        return;
    }
    for(int i=0;i<s[v].child.size();i++){
        dfs(s[v].child[i],step+1);
    }

}
int main()
{
    int n;
    scanf("%d %lf %lf",&n,&price,&rate);
    for(int i=0;i<n;i++){
        int k;
        scanf("%d",&k);
        if(k!=0){
            for(int j=0;j<k;j++){
                int x;
                scanf("%d",&x);
                s[i].child.push_back(x);
            }
        }
        else{
            int x;
            scanf("%d",&x);
            s[i].data=x;
        }
    }
    dfs(0,0);
    printf("%.1f
",sum*price*1.0);
    return 0;
}
原文地址:https://www.cnblogs.com/chenchen-12/p/10085096.html