1079. Total Sales of Supply Chain (25)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<cmath>
using namespace std;
int N;
double M,r;
int amount[100001];
vector<int> a[100001];
double sale;
void dfs(int n,double m){
//	cout<<m<<endl;
	if(a[n].size()==0){
		sale+=m*amount[n];
		return ;
	}
	else{
		for(int i=0;i<a[n].size();i++){
			dfs(a[n][i],(m*(1+r)));
		}
	}
	return ;
}
int main(){
	int k,tmp;
	scanf("%d%lf%lf",&N,&M,&r);
	r=r*0.01;
	memset(amount,0,sizeof(amount));
	for(int i=0;i<N;i++){
		scanf("%d",&k);
		if(!k){
			scanf("%d",&tmp);
			amount[i]=tmp;
		}
		else{
			while(k--){
				scanf("%d",&tmp);
				a[i].push_back(tmp);
			}
		}
	}
	dfs(0,M);
	printf("%.1lf\n",sale);
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/chan_yeol/article/details/51620115