Pagini recente » Cod sursa (job #986324) | Cod sursa (job #1054232) | Cod sursa (job #221057) | Cod sursa (job #783743) | Cod sursa (job #158261)
Cod sursa(job #158261)
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:longint;
i,j,k,e,n,aux: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}
aux:=0;
for i:=1 to n-1 do begin
readln(f,j,k);
inc(aux);
w[0,aux]:=k;
w[1,aux]:=start[j];
start[j]:=aux;
inc(aux);
w[0,aux]:=j;
w[1,aux]:=start[k];
start[k]:=aux;
end;
close(f);
assign(f,'asmax.out'); rewrite(f);
smax:=-10001;
df(e);
writeln(f,smax);
close(f);
end.