This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
#define pb push_back 
const int maxn=2000;
int n,d;
vector<int> adj[maxn];
int vis[maxn],use[maxn];
void bfs(int u,int f,int cd){
	if(vis[u]) return;
	vis[u]=1;
	if(cd==0){
		use[u]=1;
	}
	else use[u]=0;
	cd+=1;
	cd%=d;
	for(auto&v:adj[u]){
		if(v==f) continue;
		bfs(v,u,cd);
	}
}
int cal(int rt){
	for(int i=0;i<n;i++){
		vis[i]=0; use[i]=0;
	}
	bfs(rt,-1,0);
	int ret=0;
	for(int i=0;i<n;i++){
		ret+=use[i];
	}
	return ret;
}
void solve(){
	cin>>n>>d;
	for(int i=0;i<n-1;i++){
		int x; cin>>x;
		adj[x].pb(i+1);
	}
	int ans=-1;
	for(int i=0;i<=n-1;i++){
		ans=max(ans,cal(i)); 
	}
	cout<<ans<<'\n';
}
int main(){
	ios_base::sync_with_stdio(0); cin.tie(0);
	solve();
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |