Cod sursa(job #177656)

Utilizator GavrilaVladGavrila Vlad GavrilaVlad Data 13 aprilie 2008 14:10:51
Problema Asmax Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.99 kb
var v,l,p1,p2,u,c,p:array[0..32000]of longint;
    n,i,j,k,max:longint;
    f:text;
procedure df(x:longint);
var i,e:longint;
begin
   p[x]:=1;
   e:=0;
   for i:=l[x-1]+1 to l[x] do
   begin
   if p[v[i]]=0 then begin df(v[i]);
                           if c[v[i]]>0 then c[x]:=c[x]+c[v[i]];
                     end;
   end;
   if c[x]>max then max:=c[x];
end;
begin
   assign(f,'asmax.in');
   reset(f);
   read(f,n);
   for i:=1 to n do
   begin
   read(f,c[i]);
   if c[i]<0 then max:=max+c[i];
   end;
   for i:=1 to n-1 do
   begin
   read(f,p1[i*2-1],p2[i*2-1]);
   p1[i*2]:=p2[i*2-1];
   p2[i*2]:=p1[i*2-1];
   l[p1[i*2-1]]:=l[p1[i*2-1]]+1;
   l[p1[i*2]]:=l[p1[i*2]]+1;
   end;
   close(f);
   for i:=1 to n*2-2 do
   begin
   l[i]:=l[i]+l[i-1];
   u[i]:=l[i-1];
   end;
   for i:=1 to n*2-2 do
   begin
   u[p1[i]]:=u[p1[i]]+1;
   v[u[p1[i]]]:=p2[i];
   end;
   df(1);
   assign(f,'asmax.out');
   rewrite(f);
   writeln(f,max);
   close(f);
end.