#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <queue>
#include <cmath>
using namespace std;
struct node {
double amount;
vector<int> next;
};
double bfs(node arr[], double p, double r);
int main(void) {
double p, r, amount;
int i, j, k, n, next;
node *arr;
scanf("%d %lf %lf", &n, &p, &r);
arr = new node[n];
for (i = 0; i < n; i++) {
scanf("%d", &k);
if (k) {
for (j = 0; j < k; j++) {
scanf("%d", &next);
arr[i].next.push_back(next);
}
}
else {
scanf("%lf", &amount);
arr[i].amount = amount;
}
}
printf("%.1lf", bfs(arr, p, r));
delete[] arr;
return 0;
}
double bfs(node arr[], double p, double r) {
queue<int> q;
int i, level, tmp_last, last, index;
double sum = 0;
q.push(0);
last = 0;
level = 0;
while (!q.empty()) {
index = q.front();
q.pop();
if (arr[index].next.size()) {
for (i = 0; i < arr[index].next.size(); i++) {
q.push(arr[index].next[i]);
tmp_last = arr[index].next[i];
}
}
else {
sum += pow(1 + r / 100, level) * p * arr[index].amount;
}
if (index == last) {
level++;
last = tmp_last;
}
}
return sum;
}
1079. Total Sales of Supply Chain (25)解题报告
最新推荐文章于 2020-09-23 10:13:56 发布