Note
Code
#include<bits/stdc++.h>
using namespace std;
int n;
double p,r;
struct Tree{
vector<int> child;
int level;
}tree[100005];
void bfs(int root){
int min_level=1e6,cnt=0;
queue<int> q;
q.push(root);
tree[root].level=0;
while(!q.empty()){
int data=q.front();
q.pop();
if(tree[data].child.size()==0){
if(tree[data].level<min_level){
cnt=1;
min_level=tree[data].level;
}
else if(tree[data].level==min_level) cnt++;
}
for(int i=0;i<tree[data].child.size();i++){
q.push(tree[data].child[i]);
tree[tree[data].child[i]].level=tree[data].level+1;
}
}
printf("%.4lf %d",p*pow(1+r,min_level),cnt);
}
int main(){
#ifndef ONLINE_JUDGE
freopen("data.txt","r",stdin);
#endif
int k,ch;
scanf("%d %lf %lf",&n,&p,&r);
r/=100.0;
for(int i=0;i<n;i++){
scanf("%d",&k);
if(k==0) tree[i].child.clear();
else{
for(int j=0;j<k;j++){
scanf("%d",&ch);
tree[i].child.push_back(ch);
}
}
}
bfs(0);
return 0;
}