code:
#include <cstdio>
#include <string>
#include <algorithm>
#define N 500005
#define inf 0.0000000001
using namespace std;
namespace IO {
void setIO(string s)
{
string in=s+".in";
string out=s+".out";
freopen(in.c_str(),"r",stdin);
// freopen(out.c_str(),"w",stdout)
}
};
double f[N];
double ans;
int n,k,edges;
int fa[N],hd[N],to[N],nex[N],size[N];
void add(int u,int v)
{
nex[++edges]=hd[u],hd[u]=edges,to[edges]=v;
}
void dfs(int u)
{
f[u]=-1.0;
size[u]=1;
for(int i=hd[u];i;i=nex[i])
{
int v=to[i];
dfs(v);
size[u]+=size[v];
}
int mx=0;
for(int i=hd[u];i;i=nex[i])
{
int v=to[i];
f[u]=max(f[u],min(f[v],(double)size[v]/(size[u]-1))); // 最大比例
mx=max(mx,size[v]);
}
if(f[u]==-1.0) f[u]=N;
if(size[u]>k) ans=max(ans,f[u]==N?1.0:f[u]);
}
int main()
{
// IO::setIO("input");
int i,j;
scanf("%d%d",&n,&k);
for(i=2;i<=n;++i) scanf("%d",&fa[i]),add(fa[i],i);
ans=0.0;
dfs(1);
if(ans==0.0000000) printf("0\n");
else printf("%.10f\n",ans);
return 0;
}