数据较大,只能用bfs
#include <cstdio>
#include <vector>
#include <queue>
#include <math.h>
using namespace std;
#define MAX 100010
int n;
double p,r;
struct no{
int layer;
vector <int> next;
int total;
}node[MAX];
double ans=0;
double bfs(){
queue <int> q;
node[0].layer=0;
q.push(0);
while(!q.empty()){
int now = q.front();
q.pop();
int lay = node[now].layer;
if(node[now].next.size()==0){
ans+=p*pow(r,lay)*node[now].total;
}else{
for(int i=0;i<node[now].next.size();i++){
int k=node[now].next[i];
node[k].layer=lay+1;
q.push(k);
}
}
}
return ans;
}
int main(){
freopen("in.txt","r",stdin);
scanf("%d %lf %lf",&n,&p,&r);
r=1+r*0.01;
for(int i=0;i<n;i++){
int cnt;
scanf("%d",&cnt);
if(cnt==0){
scanf("%d",&node[i].total);
}else{
vector <int> tmp;
while(cnt--){
int x;
scanf("%d",&x);
tmp.push_back(x);
}
node[i].next=tmp;
}
}
printf("%.1lf\n",bfs());
return 0;
}