BFS
#include<vector>
#include<bits/stdc++.h>
using namespace std;
int a[100005];
map<int,int>vis;
int n,m,x;
double z,r;
vector<int>v[100006];
struct p{
int data;
double sum;
}mu;
double sum=0;
int bfs(int ind,double zhi){
queue<p>q;
q.push({ind,zhi});
while(!q.empty()){
mu=q.front();
q.pop();
if(vis[mu.data]){
sum+=(mu.sum)*vis[mu.data];
continue;
}
for(int i=0;i<v[mu.data].size();i++){
q.push({v[mu.data][i],mu.sum*r});
}
}
}
int main()
{
cin>>n>>z>>r;
r=(1-r/100);
for(int i=0;i<n;i++){
cin>>m;
if(m==0){
cin>>x;
vis[i]=x;
}
for(int j=0;j<m;j++){
cin>>x;
v[i].push_back(x);
}
}
bfs(0,z);
printf("%.d\n",int(sum));
return 0;
}
DFS
#include<bits/stdc++.h>
using namespace std;
int n,m,x;
double vis[100005];
vector<int>v[100005];
double r,z,sum=0;
void dfs(int ind,double zhi){
if(vis[ind]){
sum+=vis[ind]*zhi;
}
for(int i=0;i<v[ind].size();i++){
dfs(v[ind][i],zhi*r);
}
return;
}
int main()
{
cin>>n>>z>>r;
r=(1-r/100);
for(int i=0;i<n;i++){
cin>>m;
if(m==0){
cin>>x;
vis[i]=x;
}
for(int j=0;j<m;j++){
cin>>x;
v[i].push_back(x);
}
}
dfs(0,z);
cout<<int(sum)<<endl;
return 0;
}