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. |