V8ORG - Tổ chức đối lập

Tác giả: khuc_tuan

Ngôn ngữ: Pascal

type
    PNode = ^Node;
    Node = record
         i : integer;
         next : PNode;
        end;
var
   n, k, res : integer;
   ke : array[1..10000] of PNode;

   function dfs(i : integer) : integer;
   var p : PNode;
   sc, j : integer;
   begin
       p := ke[i];
        sc := 1;
       while p<>nil do begin
             j := p^.i;
             sc := sc + dfs(j);
             p := p^.next;
       end;
       if sc>=k then begin
         inc(res);
         sc := 0;
        end;
        dfs := sc;
   end;

var
   p : PNode;
   i,x : integer;
begin
     read( k, n);
     for i:=2 to n do begin
         read(x);
         new(p);
         p^.i := i;
         p^.next := ke[x];
         ke[x] := p;
     end;
     res := 0;
     dfs(1);
     writeln( res);
end.

Download