A1079 Total Sales of Supply Chain (25point(s))
题意
给出供应商、经销商、零售商组成的一棵树,和零售商销售的商品数,上一层向下一层以高于 %r 的价格销售商品,输出所有零售商的总共收入。
思路
dfs
总结
Sample Input:
10 1.80 1.00
3 2 3 5
1 9
1 4
1 7
0 7
2 6 1
1 8
0 9
0 4
0 3
Sample Output
42.4
#include"bits/stdc++.h"
using namespace std;
const int maxn = 100010;
vector<int> nodes[maxn];
double ans = 0;
map<int,int> hold; // product amount
double p,r;
void dfs(int id,int depth){
for(int t:nodes[id])
dfs(t,depth+1);
if(nodes[id].empty()){
ans += hold[id]*p*pow(1+r,depth);
}
}
int main(){
// freopen("input.txt","r",stdin);
int n;
cin >> n >> p >> r;
r /= 100;
int root = 0;
for(int i=0;i<n;i++){
int k; scanf("%d",&k);
for(int j=0;j<k;j++){
int t; scanf("%d",&t);
nodes[i].push_back(t);
}
if(k == 0){
int num; scanf("%d",&num);
hold[i] = num; // i is a retailer
}
}
dfs(root,0);
printf("%.1f\n",ans);
}