供应商系列题,father数组依旧超。遍历到每个子节点,求出每个零售商所有的商品销售价格。
#include <bits/stdc++.h>
using namespace std;
int main(){
int num;
double rootprice,rate;
cin>>num>>rootprice>>rate;
vector<vector<int>> g(num);
vector<int> price(num);
for(int i=0;i<num;i++){
int n;
cin>>n;
if(n==0) cin>>price[i];
for(int j=0;j<n;j++){
int id;
cin>>id;
g[i].push_back(id);
}
}
queue<pair<int,int>> q;
q.push(pair<int,int>(0,0));
double res=0.0;
while(!q.empty()){
auto fir=q.front();
q.pop();
if(g[fir.first].size()==0){
res+=price[fir.first]*1.0*rootprice*pow(1+0.01*rate,fir.second);
continue;
}
for(int i=0;i<g[fir.first].size();i++)q.push(pair<int,int>(g[fir.first][i],fir.second+1));
}
printf("%.1lf",res);
}