#include <iostream> #include <algorithm> #include <vector> #include <queue> using namespace std; const int MAX_N = 100000; int N; double P, r, sum = 0.0; struct Node { vector<int> child; int level, sale; }node[MAX_N]; queue<Node> Q; int main() { cin >> N >> P >> r; r = 1 + r * 0.01; int K, id; for (int i = 0; i < N; i++) { cin >> K; if (K > 0) { for (int j = 0; j < K; j++) { cin >> id; node[i].child.push_back(id); } } else cin >> node[i].sale; } Q.push(node[0]); while (!Q.empty()) { Node tmp = Q.front(); Q.pop(); for (int i = 0; i < tmp.child.size(); i++) { node[tmp.child[i]].level = tmp.level + 1; Q.push(node[tmp.child[i]]); } } for (int i = 0; i < N; i++) if (node[i].sale > 0) sum += pow(r, node[i].level) * node[i].sale; printf("%.1f\n", sum * P); }