Cod sursa(job #143625)

Utilizator dascalu2Dascalu Andi FLorin dascalu2 Data 26 februarie 2008 18:41:19
Problema Asmax Scor 90
Compilator fpc Status done
Runda Arhiva de probleme Marime 1 kb
type adresa=^nod;
     nod= record
          inf:integer;
          adr:adresa;
          end;
var n,x,y,i,max,b:longint;
    vs:array[0..16001]of longint;
    q:adresa;
    vc:array[1..16001]of adresa;
    t:array[0..16001]of byte;

procedure parc(nd,np:longint);
var p:adresa;
begin
     p:=vc[nd];
     while p<>nil do
     begin
          parc(p^.inf,nd);
          p:=p^.adr;
     end;
     if vs[nd]+vs[np]>vs[np] then
        vs[np]:=vs[np]+vs[nd];
end;

begin
assign(input,'asmax.in');
reset(input);
read(n);
for i:=1 to n do
read(vs[i]);
for i:=1 to n do
vc[i]:=nil;
for i:=1 to n-1 do
begin
     read(x,y);
     new(q);
     q^.inf:=y;
     q^.adr:=vc[x];
     vc[x]:=q;
     t[y]:=1;
end;
close(input);
for i:=1 to n do
    if(t[i]=0)then
    begin
         b:=i;
         break
    end;
parc(b,0);
max:=-maxlongint;
for i:=1 to n do
    if(max<vs[i])then
    max:=vs[i];
assign(output,'asmax.out');
rewrite(output);
writeln(max);
close(output);
end.