#include <stdio.h>
#include <iostream>
#include <vector>
#include <stack>
#include <math.h>
using namespace std;
int main() {
int n;
double p, r;
cin >> n >> p >> r;
vector<int> *v = new vector<int>[n];
int *count = new int[n];
for (int i = 0; i < n; i++) {
int num, tmp;
cin >> num;
if (num > 0) {
for(int j = 0; j < num; j++) {
cin >> tmp;
v[i].push_back(tmp);
}
} else {
cin >> count[i];
}
}
stack<int> tree;
stack<int> layer;
tree.push(0);
layer.push(0);
double sum = 0.0;
while (tree.size()) {
int tmp = tree.top();
tree.pop();
int l = layer.top();
layer.pop();
if (v[tmp].empty()) {
sum += p * pow((1 + r/100), l) * count[tmp];
}
for (int i = 0; i < v[tmp].size(); i++) {
tree.push(v[tmp][i]);
layer.push(l + 1);
}
}
printf("%.1lf\n", sum);
return 0;
}
【PAT甲级】1079. Total Sales of Supply Chain (25)
最新推荐文章于 2021-09-03 19:59:35 发布