BFS和DFS都写了
# include <bits/stdc++.h>
using namespace std;
int N;
double P, r;
vector< vector<int> > G;
map<int, int> leafProductAmount;
vector<int> level;
void BFS(){
queue<int> Q;
Q.push(0);
level[0] = 0;
while(!Q.empty()){
int u = Q.front();
Q.pop();
for(int v: G[u]){
level[v] = level[u] + 1;
Q.push(v);
}
}
}
void DFS(int u, int lv){
if(G[u].size() == 0){
level[u] = lv;
return;
}
for(int v: G[u]){
DFS(v, lv+1);
}
}
int main(){
cin >> N >> P >> r;
level = vector<int>(N);
G.resize(N);
for(int i = 0;i < N;++i){
int K;
cin >> K;
if(K != 0){
for(int j = 0;j < K;++j){
int v;
cin >> v;
G[i].push_back(v);
}
} else {
cin >> leafProductAmount[i];
}
}
DFS(0, 0);
double rst = 0.0;
for(auto p: leafProductAmount){
rst += P * pow((1 + 0.01*r), level[p.first]) * p.second;
}
printf("%.1lf\n", rst);
return 0;
}