#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,k,x,Max=INT_MIN;
vector<ll> v[100000+10];
bool vis[100000+10];
struct node{
ll cd,id;
}a[100000+10];
bool cmp(node n1,node n2){
if(n1.cd==n2.cd) return n1.id<n2.id;
return n1.cd>n2.cd;
}
void dfs(ll u,ll val){
if(vis[u]==true) return ;
Max=max(Max,val);
for(auto it:v[u]) dfs(it,val+v[u].size());
}
int main(){
cin>>n>>k;
for(ll i=1;i<=n;i++) a[i].id=i;
for(ll i=1;i<n;i++){
cin>>x;
a[x].cd++;
v[x].push_back(i+1);
}
sort(a+1,a+n,cmp);
for(ll i=1;i<=k;i++) vis[a[i].id]=true;
for(ll i=1;i<=n;i++) dfs(i,1);
cout<<Max;
return 0;
}
思路是将出度最多的几个封死,在遍历一遍