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

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

Help! Why did my program get WA? I cann't understand.
Послано LJSC 8 дек 2002 10:24
My program:

type TMatrix = array[1..100, 1..100]of longint;
var
  matrix, bak: TMatrix;
  succ: boolean;
  n, m, ss: longint;
  mark: array[1..100]of boolean;

procedure travel(x0: longint; var result: longint);
var i, m0, m1, m2: longint;
begin
  if succ then exit;
  m1 := 0; m2 := 0;
  for i := 1 to n do
    if(matrix[x0, i] > 0)and mark[i] then
    begin
      succ := true;
      exit;
    end else if not mark[i] then
    begin
      matrix[i, x0] := 0;
      mark[i] := true;
      travel(i, m0);
      if m0 + matrix[x0, i] > m1 then
      begin
        m2 := m1;
        m1 := m0 + matrix[x0, i];
      end else if m0 + matrix[x0, i] > m2 then
        m2 := m0 + matrix[x0, i];
      matrix[x0, i] := 0;
    end;
  if m1 + m2 >= ss then
  begin
    succ := true;
    exit;
  end;
  result := m1;
end;

var
  i, j, k: longint;
begin
  succ := false;
  read(n, m, ss);
  fillchar(bak, sizeof(bak), 0);
  while m > 0 do
  begin
    read(i, j, k);
    if(i = j) or (bak[i, j] > 0) then
    begin
      succ := true;
      break;
    end;
    bak[i, j] := k;
    bak[j, i] := k;
    dec(m);
  end;
  matrix := bak;
  fillchar(mark, sizeof(mark), 0);
  for i := 1 to n do
    if not mark[i] then
    begin
      mark[i] := true;
      travel(i, j);
    end;
  for i := 1 to n do
    for j := 1 to n do
      if bak[i, j] >= ss then
        succ := true;
  if succ then
    writeln('YES')
  else
    writeln('NO');
end.