//全部改成double后,还剩3 points超时。。没办法啊
#include<iostream>
using namespace std;
int n;
double p, r;
double total = 0;
struct Node{
bool isretailer;
int data;
int parent;
double amount;
}node[100005] = { false, 0, 0, 0 };
int findparent(int i){
return node[i].parent;
}
int main(){
cin >> n >> p >> r;
for (int i = 0; i < n; i++){
int tmp; cin >> tmp;
if (tmp){
for (int j = 0; j < tmp; j++){
int num; cin >> num;
node[num].parent = i;
}
}
else{
node[i].isretailer = true;
double num; cin >> num;
node[i].amount = num;
}
}
for (int i = 0; i < n; i++){
if (node[i].isretailer){//找到所有retailers
int k = i;
double sale = node[i].amount*p;
while (k){
sale *= (1 + r / 100);
k = findparent(k);
}
total += sale;
}
}
printf("%.1lf", total);
}
PAT 1079. Total Sales of Supply Chain (25)
最新推荐文章于 2021-09-03 19:59:35 发布