#include<iostream>
#include<math.h>
#include<algorithm>
#include<queue>
#include<map>
#include<set>
#include<stack>
#include<string>
#include<vector>
using namespace std;
#define INF 100000000
#define maxn 100010
struct node{
int pnum;
vector<int> child;
};
double r;
double p;
double sum=0;
node tree[maxn];
void pre(int index,int depth)
{
if(tree[index].child.size()==0)
{
sum+=p*tree[index].pnum*pow(1+r,depth);//注意这边的技巧
return;
}
for(int i=0;i<tree[index].child.size();i++)
{
pre(tree[index].child[i],depth+1);
}
}
int main(){
int n;
cin>>n>>p>>r;
r=r/100;
for(int i=0;i<n;i++)
{ tree[i].pnum=0;
int num;
cin>>num;
int store;
if(num==0){ cin>>store;
tree[i].pnum=store;}
for(int j=0;j<num;j++)
{
cin>>store;
tree[i].child.push_back(store);
}
}
pre(0,0);
printf("%.1lf",sum);
return 0;
}
PAT程序设计考题——甲级1079( Total Sales of Supply Chain ) C++实现
最新推荐文章于 2021-03-07 21:13:37 发布