Cod sursa(job #458915)

Utilizator 05_YohnE1 La5c01 05_Yohn Data 26 mai 2010 22:44:30
Problema Asmax Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.99 kb
type pnod=^nod;
     nod=record
         info:integer;
         urm:pnod;
         end;

var v:array[1..16000]of pnod;
s:array[1..16000]of longint;
viz:array[1..16000]of boolean;
x,y,n,i:integer;
max:longint;

procedure add(var p:pnod; x:integer);
var q:pnod;
begin
new(q);
q^.info:=x;
q^.urm:=p;
p:=q;
end;

procedure dfs(x:integer);
var q:pnod;
begin
if not viz[x] then begin
   q:=v[x];
   viz[x]:=true;
   while q<>nil do begin
         if not viz[q^.info] then begin
            dfs(q^.info);
            if s[q^.info]>0 then s[x]:=s[x]+s[q^.info];
            end;
         q:=q^.urm;
         end;
   end;
end;



begin
assign(input,'asmax.in'); reset(input);
assign(output,'asmax.out'); rewrite(output);
read(n);
for i:=1 to n do read(s[i]);

for i:=1 to n-1 do begin
    read(x,y);
    add(v[x],y);
    add(v[y],x);
end;

fillchar(viz,sizeof(viz),false);
dfs(1);

max:=s[1];
for i:=2 to n do if max<s[i] then max:=s[i];
write(max);
close(output);
end.