测试点1是祖师爷就是得道者的情况
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+7;
const int inf=510;
double a[maxn];
int head[maxn],cnt=0;
double z,r;
int n;
double ans=0;
struct node
{ int v;
double w;
int next;
}E[maxn*2];
double w[maxn];
void add(int u,int v)
{
E[++cnt].v=v;
E[cnt].next=head[u];
head[u]=cnt;
}
int vis[maxn],f[maxn];
int find(int x)
{
while(x!=f[x])
x=f[x];
return x;
}
void dfs(int u)
{
for(int i=head[u];i;i=E[i].next)
{
int v=E[i].v;
w[v]=w[u]*r;
if(vis[v])
{ w[v]=w[v]*vis[v];
ans+=w[v];
}
dfs(v);
}
}
int main()
{
for(int i=0;i<=n;i++)
f[i]=i;
cin>>n>>z>>r;
r=1.00-r/100;
for(int i=0;i<n;i++)
{
int ki;
cin>>ki;
if(ki==0)
{
int p;
cin>>p;
vis[i]=p;
}
else
{
while(ki--)
{
int v;
f[v]=i;
cin>>v;
add(i,v);
}
}
}
int root=find(0);
w[root]=z;
dfs(root);
if(vis[root])
ans+=z*vis[root];
cout<<(int)ans<<endl;
}