Pagini recente » Cod sursa (job #816769) | Cod sursa (job #200698) | Cod sursa (job #2304579) | Cod sursa (job #1235866) | Cod sursa (job #177656)
Cod sursa(job #177656)
var v,l,p1,p2,u,c,p:array[0..32000]of longint;
n,i,j,k,max:longint;
f:text;
procedure df(x:longint);
var i,e:longint;
begin
p[x]:=1;
e:=0;
for i:=l[x-1]+1 to l[x] do
begin
if p[v[i]]=0 then begin df(v[i]);
if c[v[i]]>0 then c[x]:=c[x]+c[v[i]];
end;
end;
if c[x]>max then max:=c[x];
end;
begin
assign(f,'asmax.in');
reset(f);
read(f,n);
for i:=1 to n do
begin
read(f,c[i]);
if c[i]<0 then max:=max+c[i];
end;
for i:=1 to n-1 do
begin
read(f,p1[i*2-1],p2[i*2-1]);
p1[i*2]:=p2[i*2-1];
p2[i*2]:=p1[i*2-1];
l[p1[i*2-1]]:=l[p1[i*2-1]]+1;
l[p1[i*2]]:=l[p1[i*2]]+1;
end;
close(f);
for i:=1 to n*2-2 do
begin
l[i]:=l[i]+l[i-1];
u[i]:=l[i-1];
end;
for i:=1 to n*2-2 do
begin
u[p1[i]]:=u[p1[i]]+1;
v[u[p1[i]]]:=p2[i];
end;
df(1);
assign(f,'asmax.out');
rewrite(f);
writeln(f,max);
close(f);
end.