Pagini recente » Cod sursa (job #3003116) | Cod sursa (job #3284955) | Cod sursa (job #1743327) | Cod sursa (job #2703082) | Cod sursa (job #803595)
Cod sursa(job #803595)
program asmax;
var f,g:text;
n,i,j,x,y:integer;
v:array[1..16000] of integer;
a:array of array of integer;
s:array[1..16000] of longint;
viz:array[1..16000] of 0..1;
suma,maxim:longint;
ok:boolean;
function max (a,b:longint):longint;
begin
if a>b then
max:=a
else
max:=b;
end;
procedure df(nod:integer);
var i:integer;
begin
viz[nod]:=1;
s[nod]:=v[nod];
for i:=1 to a[nod,0] do
if viz[a[nod,i]]=0 then
begin
viz[a[nod,i]]:=1;
df(a[nod,i]);
s[nod]:=max(s[nod],s[nod]+s[a[nod,i]]);
end;
end;
begin
assign (f,'asmax.in'); reset(f);
assign (g,'asmax.out'); rewrite (g);
readln(f,n);
ok:=true;
maxim:=-maxlongint;
for i:=1 to n do
begin
read (f,v[i]);
if v[i]>maxim then
maxim:=v[i];
if v[i]>0 then
ok:=false;
end;
readln (f);
if ok then
write (g,maxim)
else
begin
setlength(a,n+1);
for i:=1 to n do
setlength (a[i],1);
for i:=1 to n-1 do
begin
readln (f,x,y);
setlength (a[x],length (a[x])+1);
a[x,0]:=a[x,0]+1;
a[x,a[x,0]]:=y;
setlength (a[y],length (a[y])+1);
a[y,0]:=a[y,0]+1;
a[y,a[y,0]]:=x;
end;
df(1);
suma:=0;
for i:=1 to n do
suma:=max(suma,s[i]);
write (g,suma);
end;
close (f);
close(g);
end.