#include<cstdio>
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
int N,root,depth,maxdepth=0,maxnum=0;
vector<int> v[100001];
void dfs(int index,int depth){
if(v[index].size()==0){
if(maxdepth==depth)
maxnum++;
if(maxdepth<depth){
maxdepth=depth;
maxnum=1;
}
return;
}
for(int i=0;i<v[index].size();i++)
dfs(v[index][i],depth+1);
}
int main() {
double p,r;
int temp;
cin>>N>>p>>r;
for(int i=0;i<N;i++){
cin>>temp;
if(temp==-1){
root=i;
continue;
}
else{
v[temp].push_back(i);
}
}
dfs(root,0);
printf("%.2f %d",p*pow(1+r/100,maxdepth),maxnum);
}
网友评论