Pagini recente » Cod sursa (job #3137094) | Cod sursa (job #414232) | Cod sursa (job #2254442) | Cod sursa (job #3159525) | Cod sursa (job #1331896)
const f1='asmax.in';
f2='asmax.out';
dim=17000;
type nod=^date;
date=record
num:longint;
next:nod;
end;
var a,s,v:array[1..dim] of longint;
g:array[1..dim] of nod;
n,i,sol,x,y:longint;
p:nod;
function max(a,b:longint):longint;
begin
if a>b then max:=a else max:=b;
end;
procedure depth(k:longint);
var p:nod;
begin
v[k]:=1;
s[k]:=s[k]+a[k];
while g[k]<>nil do begin
if v[g[k]^.num]=0 then begin
depth(g[k]^.num);
if s[g[k]^.num]>0 then s[k]:=s[k]+s[g[k]^.num];
end;
g[k]:=g[k]^.next;
end;
end;
begin
assign(input,f1);reset(input);
assign(output,f2);rewrite(output);
readln(n);
for i:=1 to n do read(a[i]);
for i:=1 to n-1 do begin
readln(x,y);
new(p);
p^.next:=g[x];
p^.num:=y;
g[x]:=p;
new(p);
p^.next:=g[y];
p^.num:=x;
g[y]:=p;
end;
close(input);
depth(1);sol:=-16000000;
for i:=1 to n-1 do
sol:=max(sol,s[i]);
write(sol);
close(output);
end.