PAT.A1079 Total Sales of Supply Chain

返回目录在这里插入图片描述

题意

给出一颗树根编号为0的树,树根处货物价格为p,从根节点往下一层,货物价格就要增加r%,再给出叶子结点的货物量,问所有叶子结点的价格之和。

样例(可复制)

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
//output
42.4

注意点

  1. 本题使用DFS和BFS都可以,下面的写法使用的是DFS,如果使用BFS,则可以考虑开两个queue < int >,一个记录编号,一个记录层数
  2. 本题node结构体中记录孩子节点使用vector而不用数组原因有二:①vector可以动态添加元素,不需要声明大小,如果使用数组,由于不知道最多的孩子结点个数,需要开比较大的空间,内存可能溢出。②vector自动修改和记录大小,不需要再使用一个变量记录孩子个数
#include<bits/stdc++.h>
using namespace std;

struct Node{
	double data;
	vector<int> child;
}node[100010];
int n,m,tmp;
double p,r,sum=0; 
void DFS(int root,int depth){
	if(node[root].child.size()==0){
		sum+=node[root].data*pow(1+r,depth);
		return;
	}
	for(int i=0;i<node[root].child.size();i++)DFS(node[root].child[i],depth+1);
}
int main(){
	cin>>n>>p>>r;
	r/=100;
	for(int i=0;i<n;i++){
		scanf("%d",&m);
		if(m==0){
			scanf("%lf",&node[i].data);
		}else{
			while(m--){
				scanf("%d",&tmp);
				node[i].child.push_back(tmp);
			}
		}
	}
	DFS(0,0);
	printf("%.1f\n",p*sum);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小怪兽会微笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值