V8ORG - Tổ chức đối lập
Tác giả: ll931110
Ngôn ngữ: Pascal
{$MODE DELPHI}
program V8ORG;
const
input = '';
output = '';
maxn = 10000;
type
pnode = ^tnode;
tnode = record
val: integer;
link: pnode;
end;
var
n,k,count: integer;
d,t,pre: array[1..maxn] of integer;
dep: array[1..maxn] of pnode;
procedure add(i,x: integer);
var
p: pnode;
begin
new(p);
p^.val := x;
p^.link := dep[i];
dep[i] := p;
end;
procedure init;
var
f: text;
i: integer;
begin
assign(f, input);
reset(f);
read(f, k, n);
t[1] := 1;
d[1] := 0;
for i := 1 to n do dep[i] := nil;
for i := 2 to n do
begin
read(f, pre[i]);
t[i] := 1;
d[i] := d[pre[i]] + 1;
add(d[i],i);
end;
close(f);
end;
procedure solve;
var
v,i: integer;
p: pnode;
begin
for i := n downto 1 do
begin
p := dep[i];
while p <> nil do
begin
v := p^.val;
if t[v] >= k then inc(count) else t[pre[v]] := t[pre[v]] + t[v];
p := p^.link;
end;
end;
if t[1] >= k then inc(count);
end;
procedure printresult;
var
f: text;
begin
assign(f, output);
rewrite(f);
writeln(f, count);
close(f);
end;
begin
init;
solve;
printresult;
end.