V8ORG - Tổ chức đối lập
Tác giả: hieult
Ngôn ngữ: C++
#include<cstdio>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<cassert>
#include<ctime>
#include<algorithm>
#include<iterator>
#include<iostream>
#include<cctype>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<list>
//#include<conio.h>
#define ep 0.000000001
#define maxn 100111
#define oo 1111111111
#define TR(c, it) for(typeof((c).begin()) it=(c).begin(); it!=(c).end(); it++)
double const PI=4*atan(1);
using namespace std;
typedef pair<int, int> II;
typedef vector<int> VI;
typedef vector<II> VII;
typedef vector<VI> VVI;
typedef vector<VII> VVII;
int n,k,cha[11111],d[11111],x,KQ=0;
int main(){
//freopen("V8ORG.in","r",stdin);
scanf("%d %d",&k,&n);
for(int i = 2;i<=n;i++){
scanf("%d",&cha[i]);
d[i] = 0;
x = i;
do{
x = cha[x];
d[x]++;
}while(x!=1);
}
cha[1] = 1;
// for(int i = 1;i<=n;i++) printf("%d %d\n",i,cha[i]);getch();
for(int i = n;i>=1;i--){
if(d[i]>=k-1){
KQ++;
x = i;
do{
// printf("%d\n",x);
x = cha[x];
d[x] -= (d[i]+1);
}while(x!=1);
}
}
printf("%d",KQ);
// getch();
}