ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1227. Чемпионат по ралли

What's wrong with this program?
Послано Vedensky Kirill 28 авг 2003 20:30
var i,j,m,n,s,k,p : longint;
     A : array [1..100,1..100] of integer;
    B : array [1..100,1..100] of longint;
    C : array [1..100] of boolean;

procedure Work(q,w : integer);
var ii : integer;
Begin
   if C[w] then m := 1;
    if C[w] then Exit;
    C[w] := true;
   for ii := 1 to n do if (A[w,ii] > 0) and (ii <> q) then Work(w,ii);
End;

BEGIN
    Read(n,m,s);
   for i := 1 to n do for j := 1 to n do A[i,j] := 0;
   for i := 1 to m do
   begin
       Read(j,k,p);
      if (j = k) or (A[j,k] > 0) then
      begin
          for j := i+1 to m do Read(j,k,p);
         Write('YES');
         Exit;
      end;
      A[j,k] := p;
      A[k,j] := p;
   end;
   for i := 1 to n do C[i] := false;
   m := 0;
   Work(0,1);
   if m = 1 then
   begin
       Write('YES');
      Exit;
   end;
   for i := 1 to n do for j := 1 to n do if A[i,j] = 0 then B[i,j] :=
10000000
                                                       else B[i,j] :=
A[i,j];
   for i := 1 to n do B[i,i] := 0;
   for m := 1 to n do for i := 1 to n do for j := 1 to n do if B[i,j]
> B[i,m] + B[m,j] then B[i,j] := B[i,m] + B[m,j];
   m := 0;
   for i := 1 to n do for j := 1 to n do if (B[i,j] >= s) and (B[i,j]
< 10000000) then m := 1;
   if m = 0 then Write('NO')
            else Write('YES');
END.