当前位置: 首页 > 工具软件 > supply-chain > 使用案例 >

【1079】Total Sales of Supply Chain (25 分)

董意蕴
2023-12-01
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<algorithm>  
#include<map>
#include<vector>
#include<queue> 
using namespace std;  
//key:DFS递归  树结点存储
const int maxn=100010;
struct node{
	double data;  //数据域(货物量)
	vector<int> child;  //指针域
}Node[maxn];  //存放树
int n;
double p,r,ans=0;  //ans为叶结点货物的价格之和

void DFS(int index,int depth){  //注意!根结点的深度设为0!
	if(Node[index].child.size()==0){ //到达叶结点
		ans+= Node[index].data*pow(1+r,depth);  //累加叶结点货物的价格
		return ;
	}
	for(int i=0;i<Node[index].child.size();i++){
		DFS(Node[index].child[i],depth+1);  //递归访问子结点
	}
}
   
int main(){   
	int k,child;
	scanf("%d%lf%lf",&n,&p,&r);  
	r/=100;
	for(int i=0;i<n;i++){
		scanf("%d",&k);
		if(k==0){    //叶结点标志
			scanf("%lf",&Node[i].data);   //叶结点货物量
		}else{
			for(int j=0;j<k;j++){
				scanf("%d",&child);
				Node[i].child.push_back(child);  //child为结点i的子结点
			}
		}
	}
	DFS(0,0);  //DFS入口
	printf("%.1f\n",p*ans);  //输出结果
	system("pause");
    return 0;   
}

 

 类似资料: