Pagini recente » Cod sursa (job #824569) | Cod sursa (job #1586189) | Profil bodyionita | Cod sursa (job #2616680) | Cod sursa (job #158250)
Cod sursa(job #158250)
program asmax;
var t,start:array[1..16000]of integer;
c:array[1..16000]of longint;
w:array[0..1,1..32000]of integer;
smax,s:longint;
i,j,k,e,n:integer;
f:text;
procedure df(nod:integer);
var p:integer;
begin
p:=start[nod];
while p<>0 do begin
if w[0,p]<>t[nod] then begin
t[w[0,p]]:=nod;
df(w[0,p]);
if c[w[0,p]] > 0 then c[nod]:=c[nod]+c[w[0,p]];
end;
p:=w[1,p];
end;
if smax<c[nod] then smax:=c[nod];
end;
begin
assign(f,'asmax.in'); reset(f);
readln(f,n);
smax:=-10001;
for i:=1 to n do begin
read(f,c[i]);
if(c[i]>smax)then begin smax:=c[i]; e:=i end;
end;
{memoram arborele}
for i:=1 to n-1 do begin
readln(f,j,k);
w[0,2*i-1]:=k;
w[1,2*i-1]:=start[j];
start[j]:=2*i-1;
w[0,2*i]:=j;
w[1,2*i]:=start[k];
start[k]:=2*i;
end;
close(f);
assign(f,'asmax.out'); rewrite(f);
smax:=-10001;
df(e);
writeln(f,smax);
close(f);
end.