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

Обсуждение задачи 1045. Забавная игра

Please help me WA again !!! &-(
Послано Saber 28 фев 2003 17:00
here is my code please help me ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
var
  n,k,j,k1,k2   : integer;
  a             : array [1..1000,1..1000] of integer;
  lab           : array [1..1000] of boolean;
  win           : array [1..1000] of integer;
  find          : boolean;
procedure dfs(w,w1:integer);
var
  i             : integer;
  f,f1           : boolean;
begin
  f:=false;lab[w]:=true;
  for i:=1 to n do
    if not lab[i] and (a[i,w]>0) then
    begin
        dfs(i,3-w1);
        f:=true;
    end;
  if not f then
    win[w]:=2
  else
    begin
      f1:=false;
      for i:=1 to n do
        if (a[i,w]>0) and (win[i]=3-w1) then f1:=true;
      if f1 then win[w]:=w1 else win[w]:=3-w1;
    end;
end;
begin
 find:=false;
  fillchar(lab,sizeof(lab),False);
  fillchar(win,sizeof(win),0);
  readln(n,k);
  for j:=1 to n-1 do
    begin
      read(k1,k2);
      a[k1,k2]:=1;
      a[k2,k1]:=1;
    end;
  dfs(k,1);
  for k1:=1 to n do
    if (a[k1,k]=1) and (win[k1]=2) then
      begin
        find:=true;
        writeln('First player wins flying to airport ',k1);
        break;
      end;
  if not find then
    writeln('First player loses');
end.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Here is new one , but still WA :((
Послано Saber 3 мар 2003 15:24
Program funny;
var
  n,k,k1,k2,k3: integer;
  f           : boolean;
  a           : array[1..1000,0..20] of integer;
  win         : array[1..1000] of byte;
procedure dfs(w:integer);
var
  i           : integer;
begin
  if a[w,0]=0 then
    begin
      win[w]:=1;
      exit;
    end
  else
    begin
      for i:=1 to a[w,0] do
        dfs(a[w,i]);
      win[w]:=1;
      for i:=1 to a[w,0] do
        if win[a[w,i]]=1 then
          win[w]:=2;
    end;
end;
begin
  readln(n,k);
  for k1:=1 to n-1 do
    begin
      readln(k2,k3);
      inc(a[k2,0]);
      a[k2,a[k2,0]]:=k3;
    end;
  dfs(k);k2:=10001;f:=false;
  for k1:=1 to a[k,0] do
    if win[a[k,k1]]=1 then
      begin
        f:=true;
        if a[k,k1]<k2 then k2:=a[k,k1];
      end;
  if f then
    writeln('First player wins flying to airport ',k2)
  else
    writeln('First player loses');
end.
I get AC but donno my prev prog bug ...
Послано Saber 12 апр 2003 16:08
> Program funny;
> var
>   n,k,k1,k2,k3: integer;
>   f           : boolean;
>   a           : array[1..1000,0..20] of integer;
>   win         : array[1..1000] of byte;
> procedure dfs(w:integer);
> var
>   i           : integer;
> begin
>   if a[w,0]=0 then
>     begin
>       win[w]:=1;
>       exit;
>     end
>   else
>     begin
>       for i:=1 to a[w,0] do
>         dfs(a[w,i]);
>       win[w]:=1;
>       for i:=1 to a[w,0] do
>         if win[a[w,i]]=1 then
>           win[w]:=2;
>     end;
> end;
> begin
>   readln(n,k);
>   for k1:=1 to n-1 do
>     begin
>       readln(k2,k3);
>       inc(a[k2,0]);
>       a[k2,a[k2,0]]:=k3;
>     end;
>   dfs(k);k2:=10001;f:=false;
>   for k1:=1 to a[k,0] do
>     if win[a[k,k1]]=1 then
>       begin
>         f:=true;
>         if a[k,k1]<k2 then k2:=a[k,k1];
>       end;
>   if f then
>     writeln('First player wins flying to airport ',k2)
>   else
>     writeln('First player loses');
> end.