#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
vector<int> T[100010];
double p,r;
double total_sales=0;
void dfs(int root,int depth){
if(T[root].size()==1 && T[root][0]<0){
total_sales+=(-T[root][0])*p*pow(1+0.01*r,depth);
return;
}
for(int i=0;i<T[root].size();i++){
dfs(T[root][i],depth+1);
}
}
int main(){
int n,tmp_n,tmp_t;
scanf("%d %lf %lf",&n,&p,&r);
for(int i=0;i<n;i++){
scanf("%d",&tmp_n);
if(tmp_n>0)
while(tmp_n--){
scanf("%d",&tmp_t);
T[i].push_back(tmp_t);
}
else{
scanf("%d",&tmp_t);
T[i].push_back(-tmp_t);//是零售商[叶子结点]时,直接存成负的,节约一点空间
}
}
dfs(0,0);
printf("%.1f",total_sales);
return 0;
}
【PAT】1079 Total Sales of Supply Chain (25 分)
最新推荐文章于 2025-12-21 15:46:06 发布
本文介绍了一个使用深度优先搜索(DFS)算法遍历销售网络并计算总销售额的C++程序实现。该程序通过构建一个表示销售网络的图,并利用DFS进行遍历,最终根据每个节点的深度和销售额计算出总销售额。
977

被折叠的 条评论
为什么被折叠?



