#include <stdio.h>
#include <vector>
#include <cstring>
#include <cmath>
using namespace std;
const int maxv=100010;
const int inf=1000000000;
bool vis[maxv];
vector<int> list[maxv];
int n;
int lay[maxv]={0};
double p,r;
bool flag[maxv];
void dfs(int s,int layer){
vis[s]=true;
lay[s]=layer;
for(int i=0;i<list[s].size();i++){
if(vis[list[s][i]==false]){
dfs(list[s][i],layer+1);
}
}
}
int main(){
memset(vis,false,sizeof(vis));
memset(flag,false,sizeof(flag));
scanf("%d %lf %lf",&n,&p,&r);
for(int i=0;i<n;i++){
int num;
scanf("%d",&num);
if(num==0){
flag[i]=true;
}
for(int j=0;j<num;j++){
int id;
scanf("%d",&id);
list[i].push_back(id);
}
}
dfs(0,0);
int min=inf,mincnt;
for(int i=0;i<n;i++){
if(lay[i]<min&&flag[i]==true){
min=lay[i];
mincnt=1;
}else if(lay[i]==min&&flag[i]==true){
mincnt++;
}
}
printf("%.4f %d",p*pow(1+r/100,min),mincnt);
return 0;
}
05-07
446
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-05
08-05
08-05
08-05