Pagini recente » Cod sursa (job #1191410) | Cod sursa (job #3163761) | Cod sursa (job #607603) | Cod sursa (job #252075) | Cod sursa (job #458915)
Cod sursa(job #458915)
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.