最后一道遍历~~
本来想用bfs练手,结果是找leaf的,所以还是用了dfs;
#include<bits/stdc++.h>
using namespace std;
struct node{
double value;
vector<int>child;
}t[100000];
double r,minn=999999999;
int cnt=0;
void dfs(int root){
for(int i=0;i<t[root].child.size();i++){
t[t[root].child[i]].value=t[root].value*(1+0.01*r);
dfs(t[root].child[i]);
}
if(t[root].child.size()==0){
if(t[root].value<minn){
minn=t[root].value;
cnt=0;
}
if(t[root].value==minn)cnt++;
}
}
int main(){
int n;
double p;
cin>>n>>p>>r;
int temp,k;
for(int i=0;i<n;i++){
cin>>k;
for(int j=0;j<k;j++){
cin>>temp;
t[i].child.push_back(temp);
}
}
int root=0;
t[root].value=p;
dfs(root);
printf("%.4f %d",minn,cnt);
return 0;
}