#include<stdio.h>
#include<vector>
#include<math.h>
using namespace std;
int n, min_level=110000, num=0;
double p, r;
struct pnode{
vector<int> child;
}node[100010];
void DFSorder(int root, int depth){
if(node[root].child.size()==0){
if(depth<min_level){min_level=depth; num=1;}
else if(depth==min_level){num++;}
}
for(int it=0;it<node[root].child.size();it++){
DFSorder(node[root].child[it],depth+1);
}
}
int main(){
int i, j, loop, temp;
scanf("%d%lf%lf",&n,&p,&r);
for(i=0;i<n;i++){
scanf("%d",&loop);
if(loop!=0){
for(j=0;j<loop;j++){
scanf("%d",&temp);
node[i].child.push_back(temp);
}
}//if
}
r=1+r/100;
DFSorder(0,0);
printf("%0.4f %d\n",p*pow(r,min_level),num);
return 0;
}
PAT-A1106
最新推荐文章于 2021-01-13 20:20:46 发布