代码容易理解,不再赘述#include <cstdio>
#include <vector>
#include <cmath>
using namespace std;
vector<int> v[100005];
int mindepth = 99999999, minnum = 1;
void dfs(int inx, int depth)
{
if(mindepth < depth)
return ;
if(v[inx].size() == 0)
{
if(mindepth == depth)
minnum++;
else if(mindepth > depth)
{
mindepth = depth;
minnum = 1;
}
}
for(int i = 0; i < v[inx].size(); i++)
dfs(v[inx][i], depth + 1);
}
int main()
{
int n, k, c;
double p, r;
scanf("%d %lf %lf", &n, &p, &r);
for(int i = 0; i < n; i++)
{
scanf("%d", &k);
for(int j = 0; j < k; j++)
{
scanf("%d", &c);
v[i].push_back(c);
}
}
dfs(0, 0);
printf("%.4f %d", p * pow(1 + r/100, mindepth), minnum);
return 0;
}