A1079 Total Sales of Supply Chain (25 分)
#include<iostream>
using namespace std;
#include<cstdio>
#include<vector>
#include<cmath>
const int MAXN=100010;
struct Node {
double data;
vector<int> child; //child为vector类型
}node[MAXN];
int num;
double price,rate,sum;
void DFS(int index,int depth) {
if(node[index].child.size() == 0) {
sum += node[index].data*pow(1+rate,depth);
return;
}
for(int i=0;i<node[index].child.size();i++) {
DFS(node[index].child[i],depth+1);
}
}
int main() {
int knum,child;
scanf("%d%lf%lf",&num,&price,&rate);
rate /= 100; //rate是百分数
for(int i=0;i<num;i++) {
scanf("%d",&knum);
if(knum==0) {
scanf("%lf",&node[i].data); //叶结点货物量
}else {
for(int j=0;j<knum;j++) {
scanf("%d",&child);
node[i].child.push_back(child);
}
}
}
DFS(0,0);
printf("%.1f\n",price*sum); //保留一位小数
return 0;
}