Pagini recente » Cod sursa (job #1629087) | Cod sursa (job #1102798) | Cod sursa (job #1950087) | Cod sursa (job #34851) | Cod sursa (job #24431)
Cod sursa(job #24431)
var f,g:text;
x,y,va,gr:array[1..16000]of longint;
n,m,mm,i,b,a,max:longint;
begin
assign(f,'asmax.in');
reset(f);
assign(g,'asmax.out');
rewrite(g);
readln(f,n);
m:=n-1;
max:=-10000;
for i:=1 to n do begin
read(f,va[i]);
if va[i]>max then max:=va[i];
end;
readln(f);
for i:=1 to m do begin
readln(f,x[i],y[i]);
gr[x[i]]:=gr[x[i]]+1;
gr[y[i]]:=gr[y[i]]+1;
end;
while m>1 do begin
mm:=0;
for i:=1 to m do begin
a:=x[i];
b:=y[i];
if gr[a]=1 then begin
gr[a]:=0;
gr[b]:=gr[b]-1;
if va[a]>0 then begin
va[b]:=va[b]+va[a];
if va[b]>max then max:=va[b];
end;
end
else if gr[b]=1 then begin
gr[b]:=0;
gr[a]:=gr[a]-1;
if va[b]>0 then begin
va[a]:=va[a]+va[b];
if va[a]>max then max:=va[a];
end;
end
else begin
mm:=mm+1;
x[mm]:=a;
y[mm]:=b;
end;
end;
m:=mm;
end;
if n=1 then write(g,max)
else begin
if (va[x[1]]>0)and(va[y[1]]>0) then begin
a:=va[x[1]]+va[y[1]];
if a>max then max:=a;
end;
write(g,max);
end;
close(g);
end.