给出一颗销售供应的树,树根唯一。在树根处货物的价格为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; }