#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
#include<math.h>
#include<cmath>
using namespace std;
#define maxn 100010
struct node{
double data;
vector<int >child;
}Node[maxn];
double p,r;
int n;
double ans=0;
void BFS(int index,int depth)
{
if(Node[index].child.size()==0)
{
ans+=Node[index].data*pow(1+r,depth);
return;
}
for(int i=0;i<Node[index].child.size();i++)
{
BFS(Node[index].child[i],depth+1);
}
}
int main()
{
scanf("%d%lf%lf",&n,&p,&r);
r/=100;
for(int i=0;i<n;i++)
{
int m;
scanf("%d",&m);
if(m==0)
scanf("%lf",&Node[i].data);
else
{
for(int j=0;j<m;j++)
{
int k;
scanf("%d",&k);
Node[i].child.push_back(k);
}
}
}
BFS(0,0);
printf("%.1f\n",p*ans);
return 0;
}
还是题意……
最近有点浮躁
读题读不认真
还有就是一般BFS输出的值会根据题意有所改变
但是参数值就是这两个