PAT 甲级 1106 Lowest Price in Supply Chain
注意最后统计时判断一下是不是经销商即可。
#include <bits/stdc++.h>
using namespace std;
int n;double p,r;
int min_layer=100000;
struct Node{
int layer{0};
vector<int>childs;
}node[100010];
void BFS(int root)
{
queue<int> q;q.push(root);
while(!q.empty()){
int now=q.front();q.pop();
if(node[now].childs.size()==0){
if(node[now].layer<min_layer) min_layer=node[now].layer;
}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 k,tmp;
for(int i=0;i<n;++i){
cin>>k;
while(k--){
cin>>tmp;
node[i].childs.push_back(tmp);
}
}
BFS(0);
int ctr=0;
double min_price=p*pow(1+r,min_layer);
for(int i=0;i<n;++i)
if(node[i].layer==min_layer&&node[i].childs.size()==0)
++ctr;
printf("%.4lf %d",min_price,ctr);
}