Pagini recente » Cod sursa (job #1948902) | Cod sursa (job #161218) | Cod sursa (job #1666696) | Cod sursa (job #2215553) | Cod sursa (job #143619)
Cod sursa(job #143619)
type adresa=^nod;
nod= record
inf:integer;
adr:adresa;
end;
var n,x,y,i,max:longint;
vs:array[0..16000]of longint;
q:adresa;
vc:array[1..16000]of adresa;
t:array[0..16000]of byte;
procedure parc(nd,np:longint);
var p:adresa;
begin
p:=vc[nd];
while p<>nil do
begin
parc(p^.inf,nd);
p:=p^.adr;
end;
if vs[nd]+vs[np]>vs[np] then
vs[np]:=vs[np]+vs[nd];
end;
begin
assign(input,'asmax.in');
reset(input);
read(n);
for i:=1 to n do
read(vs[i]);
for i:=1 to n-1 do
begin
read(x,y);
new(q);
q^.inf:=y;
q^.adr:=vc[x];
vc[x]:=q;
t[y]:=1;
end;
close(input);
for i:=1 to n do
if(t[i]=0)then
break;
parc(i,0);
max:=-maxlongint;
for i:=1 to n do
if(max<vs[i])then
max:=vs[i];
assign(output,'asmax.out');
rewrite(output);
writeln(max);
close(output);
end.