Cod sursa(job #145719)

Utilizator valytgjiu91stancu vlad valytgjiu91 Data 29 februarie 2008 11:24:18
Problema Dusman Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 2.14 kb
const nmax=1000;
type stiva=array[1..nmax] of integer;
var f,g:text;
    a:array[1..nmax,1..nmax] of 0..1;
    k,x,y,L,m,n,i,o:longint;
    ap:array[1..nmax] of 0..1;
    st:stiva;
    ev,as:boolean;
begin
     assign(f,'dusman.in');reset(f);
     readln(f,n,l,m);
     for i:=1 to m do begin
         readln(f,x,y);
         a[x,y]:=1;
         a[y,x]:=1;
     end;
     close(f);
     assign(f,'dusman.out');rewrite(f);
     k:=1; st[k]:=0;
     while k>0 do begin
          repeat
                as:=False;
                if st[k]<N then begin
                      as:=True;
                      st[k]:=st[k]+1;
                   end;
                if as then begin
                           ev:=True;
                           if k=1 then ev:=true
                              else begin
                                      if ap[st[k]]=1 then ev:=false
                                                     else
                                                         if (a[st[k],st[k-1]]=1) then ev:=false;
                                   end;
                   end;
                if as and ev then ap[st[k]]:=1;
          until (not as) Or (as and ev);
          if as then
                       if k=N then begin
                                        o:=o+1;
                                        if o=L then
                                        begin
                                           For i:=1 To N-1 do
                                               write(f,st[i],' ');
                                           write(f,st[N]);
                                           close(f);
                                           halt;
                                        end;
                                        ap[st[N]]:=0;
                                   end
                              else begin
                                        k:=k+1;
                                        st[k]:=0;
                                   end
          else begin
               st[k]:=0;
               k:=k-1;
               ap[st[k]]:=0;
          end;
     end;
     close(f);
End.