Pagini recente » Cod sursa (job #1240268) | Cod sursa (job #935748)
Cod sursa(job #935748)
type list=^cel;
cel=record
v:integer;
urm:list;
end;
var a,ult:array[1..16000]of list;
b:array[1..16000]of longint;
stare:array[1..16000]of byte;
i,n,v1,v2:integer;
smax:longint;
r:list;
buf1:array[1..16000]of byte;
procedure parc(n:integer);
var r:list;
begin
stare[n]:=1;
r:=a[n];
while r<>nil do
begin
if stare[r^.v]=0 then
begin
parc(r^.v);
if b[r^.v]>0 then b[n]:=b[n]+b[r^.v];
end;
r:=r^.urm;
end;
if b[n]>smax then smax:=b[n];
end;
begin
assign(input,'asmax.in'); reset(input); settextbuf(input,buf1);
readln(n);
for i:=1 to n do read(b[i]);
for i:=1 to n do begin new(a[i]); a[i]^.urm:=nil; a[i]^.v:=i; ult[i]:=a[i]; end;
for i:=1 to n-1 do
begin
readln(v1,v2);
new(r);
r^.v:=v2;
r^.urm:=nil;
ult[v1]^.urm:=r;
ult[v1]:=r;
new(r);
r^.v:=v1;
r^.urm:=nil;
ult[v2]^.urm:=r;
ult[v2]:=r;
end;
smax:=b[1];
parc(1);
assign(output,'asmax.out'); rewrite(output);
writeln(smax);
close(output);
end.