PAT 甲级 1079 Total Sales of Supply Chain
这道题也可以用DFS做,递归时维护一下深度信息即可。
#include <bits/stdc++.h>
using namespace std;
int n;double p,r;
double ans=0.0;
struct Node{
int layer{0};
int num{0};
vector<int>childs;
}node[100010];
void BFS()
{
queue<int> q;q.push(0);
while(!q.empty()){
int now=q.front();q.pop();
if(node[now].childs.size()==0){
ans+=p*pow(1+r,node[now].layer)*node[now].num;
}else{
for(auto i:node[now].childs){
node[i].layer=node[now].layer+1;
q.push(i);
}
}
}
}
int main() {
cin>>n>>p>>r;r/=100;
int num,tmp;
for(int i=0;i<n;++i){
cin>>num;
if(num==0) {cin>>tmp; node[i].num=tmp;}
else{
while(num--){cin>>tmp; node[i].childs.push_back(tmp);}
}
}
BFS();
printf("%.1lf",ans);
}