Cod sursa(job #158250)

Utilizator robert_dDragan Robert robert_d Data 13 martie 2008 15:54:31
Problema Asmax Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.98 kb
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.