1079 Total Sales of Supply Chain (25 分)
水~。
题意
给出一棵销售供应的树,树根唯一。在树根处货物的价格为P,然后从根结点开始每往子结点走一层,该层的货物价格将会在父亲结点的价格上增加r%。给出每个叶结点的货物量,求它们的价格之和。
注意点
输入中,如果\(K_i\)为0,则表示该结点为叶结点,后面跟的数字为该叶结点的货物量;如果\(K_i\)不为0,则表示该结点为非叶子结点,\(K_i\)为其子结点的个数,后面跟的数字都是子结点编号。
const int N=1e5+10;
vector<int> g[N];
int cnt[N];
int n;
double price,rate;
double ans;
void dfs(int root,double cost)
{
if(g[root].size() == 0)
{
ans+=cost*cnt[root];
return;
}
for(int i=0;i<g[root].size();i++)
{
int j=g[root][i];
dfs(j,cost*(1+rate));
}
}
int main()
{
cin>>n>>price>>rate;
rate/=100;
for(int i=0;i<n;i++)
{
int k;
cin>>k;
if(k == 0)
{
int t;
cin>>t;
cnt[i]=t;
}
else
{
for(int j=0;j<k;j++)
{
int x;
cin>>x;
g[i].pb(x);
}
}
}
dfs(0,price);
printf("%.1f\n",ans);
//system("pause");
return 0;
}