[Мы решаем ваши проблемы с Си и Паскалем ]
Главная » Статьи » Задачи с acm.timus.ru » Пакет решений на 15.03.08

1039
Var
  T,F: Array[0..6000] of Integer;
  O: Array[0..6000] of LongInt;
  I,J,N,R,L,K: LongInt;
Function MaxF(K:LongInt):LongInt;
Var F1,F2,I,J: LongInt;
Begin
  If O[K]<>0 then begin
    MaxF:=O[K];
    Exit;
  End;
  F1:=0; F2:=0;
  For I:=1 to N do
    If T[I]=K then begin
      For J:=1 to N do
        If T[J]=I then F2:=F2+MaxF(J);
      F1:=F1+MaxF(I);
    End;
  F2:=F2+F[K];
  If F2>F1 then O[K]:=F2
           else O[K]:=F1;
  MaxF:=O[K];
End;
Begin
  R:=0;
  FillChar(T,SizeOf(T),0);
  FillChar(F,SizeOf(F),0);
  FillChar(O,SizeOf(O),0);
  Read(N);
  For I:=1 to N do
    Read(F[I]);
  Repeat
    Read(L,K);
    T[L]:=K;
  Until (K=0);
  For I:=1 to N do
    If T[I]=0 then R:=R+MaxF(I);
  Writeln(R);
End.
Категория: Пакет решений на 15.03.08 | Добавил: solver (15.03.2008)
Просмотров: 851