the key point is how to present a tree....data structure
ps:time and space complexity.
#include<iostream>
using namespace std;
struct TreeNode
{
double price;
int parent;
int amount;
};
int main()
{
const int N=100001;
TreeNode node[N];
int n;
double p,r;
cin>>n>>p>>r;
for(int i=0;i<n;i++)
{
node[i].price=0;
node[i].amount=0;
}
node[0].price=p;
for(int i=0;i<n;i++)
{
int k;
cin>>k;
if(k==0)
{
cin>>node[i].amount;
}
else
{
for(int j=0;j<k;j++)
{
int x;
cin>>x;
node[x].parent=i;
if(node[i].price!=0)
{
node[x].price=node[i].price*(1+r/100);
}
}
}
}
double ans=0;
for(int i=0;i<n;i++)
{
if(node[i].price==0)
{
node[i].price=node[node[i].parent].price*(1+r/100);
}
if(node[i].amount!=0)
{
ans+=node[i].price*node[i].amount;
}
}
printf("%.1lf",ans);
}