Cod sursa(job #103876)

Utilizator CezarMocanCezar Mocan CezarMocan Data 15 noiembrie 2007 18:42:03
Problema Zvon Scor 0
Compilator fpc Status done
Runda Happy Coding 2007 Marime 1.68 kb
type pnod=^nod;
        nod=record
                t:longint;
                urm:pnod;
                end;

var t,max,nrmax:array[0..100010]of longint;
    v:array[0..100010]of pnod;
    tt,n,i,k,a,b:longint;
    aux:pnod;

procedure df(nod:longint);
var x:pnod;
begin
x:=v[nod]^.urm;
while x <> nil do
        begin
        df(x^.t);
        if t[x^.t]=max[nod] then
                inc(nrmax[nod]);
        if t[x^.t]>max[nod] then
                begin
                max[nod]:=t[x^.t];
                nrmax[nod]:=1;
                end;
        x:=x^.urm;
        end;
t[nod]:=max[nod]+nrmax[nod];
end;

begin
assign(input,'zvon.in');reset(input);
assign(output,'zvon.out');rewrite(output);
readln(tt);
for k:=1 to tt do
        begin
        readln(n);
        fillchar(t,sizeof(t),0);
        fillchar(nrmax,sizeof(nrmax),0);
        fillchar(max,sizeof(max),0);
        for i:=1 to n do
                begin
                new(v[i]);
                v[i]^.urm:=nil;
                end;
        for i:=1 to n-1 do
                begin
                readln(a,b);
                aux:=new(pnod);
                aux^.t:=b;
                aux^.urm:=v[a]^.urm;
                v[a]^.urm:=aux;
                end;
        if n<>1 then
                df(1);
        writeln(t[1]);
        //stergere lista
        for i:=1 to n-1 do
                begin
                while (v[i]^.urm<>nil) do
                        begin
                        aux:=v[i]^.urm;
                        v[i]:=aux;
                        dispose(aux);
                        end;
                end;
        end;
close(input);close(output);
end.