Pagini recente » Cod sursa (job #3225252) | Cod sursa (job #2923201) | Cod sursa (job #3263361) | Cod sursa (job #324623) | Cod sursa (job #1331920)
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);
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;
if sol<s[k] then sol:=s[k];
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;sol:=-16000000;
close(input);
depth(1);
write(sol);
close(output);
end.