Cod sursa(job #120693)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 6 ianuarie 2008 12:45:00
Problema Dusman Scor 70
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.93 kb
const nmax=1000;
type vector=array[1..nmax] of integer;
var
   x,y,N,kk,k,M:integer;
   as,ev:boolean;
   Viz,st:vector;
   f:text;
   D:Array[1..nmax,1..nmax] of integer;
Procedure succesor(k:integer;var st:vector;var as:boolean);
begin
     if st[k]<N then begin
                          st[k]:=st[k]+1;
                          as:=true;
                     end
                else as:=False;
end;
Procedure tipar(k:integer;st:vector);
var j:integer;
begin
     assign(f,'dusman.out'); rewrite(f);
     for j:=1 to k do
         write(f,st[j],' ');
     close(f);
end;
Begin
     assign(f,'dusman.in'); reset(f);
     readln(f,N,kk,M);
     While Not Eof(f) Do
     begin
          Readln(f,x,y);
          D[x,y]:=1;
          D[y,x]:=1;
     end;
     close(f);
     x:=0;
     k:=1;
     st[1]:=0;
     while k>0 do
     begin
          Repeat
                succesor(k,st,as);
                if as then if k>1 then
                                  ev:=(Viz[st[k]]=0) and (D[st[k-1],st[k]]=0)
                                else ev:=true;
                if (ev and as) then viz[st[k]]:=1;
          Until (as and ev) Or (not as);
          if as then
                    if k=N then begin
                                      x:=x+1;
                                      if x=kk then begin
                                                      tipar(k,st);
                                                      halt;
                                                    end;
                                      viz[st[k]]:=0;
                                      end
                                    else begin
                                              k:=k+1;
                                              st[k]:=0;
                                         end
               else begin
                    k:=k-1;
                    Viz[st[k]]:=0;
                   end;
     end;
end.