原题

题目大意及思路
此题题干与 PAT1106 Lowest Price in Supply Chain(树、邻接表、DFS)一致,可参考该题的解题思路。
不同点:本题是算出所有节点的销量*售价,后者是比较得出最小售价。
代码
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
double ans=0,p,r;
const int maxn=100010;
vector<int> sale,child[maxn];
void DFS(int index,int depth){
if(child[index].size()==0){
ans+=p*pow(1+0.01*r,depth)*sale[index];
return;
}
for(int i=0;i<child[index].size();i++) DFS(child[index][i],depth+1);
}
int main(){
int n;
cin>>n>>p>>r;
sale.resize(n);
for(int i=0;i<n;i++){
int k;
cin>>k;
if(k==0) cin>>sale[i];
else{
child[i].resize(k);
for(int j=0;j<k;j++) cin>>child[i][j];
}
}
DFS(0,0);
printf("%.1lf\n",ans);
return 0;
}
运行截图

收获
有比较才有收获!
本文解析了PAT1079题目,涉及计算节点在供应链中的销量乘以售价,利用深度优先搜索(DFS)遍历结构。通过递归实现,展示了如何在树状结构中求解并输出所有节点的累计收益。
1466

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



