分析:
用vector来储存徒弟的序号,从而实现搜索。
代码:
#include <bits/stdc++.h>
using namespace std;
vector <int> v[100007];
double sum = 0, de;
int arr[100007] = {
0 };
void dfs(int a, double score)
{
if (!v[a].size())
{
sum += score*arr[a];
return;
}
else
{
for (int i = 0; i<v[a].size(); i++)
{
dfs(v[a][i], score*(1 - de / 100));
}
}
}
int main()
{
double sou;
int n;
scanf("%d%lf%lf", &n, &sou, &de);
for (int i = 0; i<n; i++)
{
int m;
scanf("%d", &m);
if (m == 0)scanf("%d", &arr[i]);
else
{
for (int j = 0; j<m; j++)
{
int temp;
scanf("%d", &temp);
v[i].push_back(temp);
}
}
}
dfs(0, sou);
printf("%lld", (long long)sum);
return 0;
}