ENG  RUS Timus Online Judge
Online Judge
Problems
Authors
Online contests
Site news
Webboard
Problem set
Submit solution
Judge status
Guide
Register
Authors ranklist
Current contest
Scheduled contests
Past contests
Rules
back to board

## Discussion of Problem 1045. Funny Game

Posted by Saber 28 Feb 2003 17:00
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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);
for j:=1 to n-1 do
begin
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 :((
Posted by Saber 3 Mar 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
for k1:=1 to n-1 do
begin
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 ...
Posted by Saber 12 Apr 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
>   for k1:=1 to n-1 do
>     begin
>       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.