Cod sursa(job #162270)

Utilizator Pepelea_FlaviuFlaviu Pepelea Pepelea_Flaviu Data 19 martie 2008 20:18:22
Problema Dusman Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.59 kb
type trio=record
      dusman1,dusman2,dusman3:integer;
     end;
var fi,fo:text;
    n,k,m,a,b,i,ct,j:longint;
    dusmani:array[1..1000]of trio;
    s:array[0..1000]of integer;
    v:array[1..1000]of byte;
function verif(p:integer):boolean;
begin
  verif:=false;
  if dusmani[s[p]].dusman1=s[p-1] then exit
   else
    if dusmani[s[p]].dusman2=s[p-1] then exit
      else
        if dusmani[s[p]].dusman3=s[p-1] then exit;
   verif:=true;
end;
procedure back(p:integer);
var i:integer;
begin
  for i:=1 to n do
    if v[i]=0 then
      begin
        s[p]:=i;
        v[i]:=1;
        if verif(p) then
          begin
            if p=n then
              begin
                inc(ct);
                if ct=k then
                  begin
                    for j:=1 to n do
                      write(fo,s[j],' ');
                    close(fo);
                    halt;
                  end
              end
            else back(p+1);
          end;
        v[i]:=0;
      end;
end;
begin
  assign(fi,'dusman.in'); reset(fi);
  assign(fo,'dusman.out'); rewrite(fo);
  read(fi,n,k,m); dusmani[1].dusman1:=0;
  for i:=1 to m do
    begin
      read(fi,a,b);
      if dusmani[a].dusman1=0 then dusmani[a].dusman1:=b
       else
        if dusmani[a].dusman2=0 then dusmani[a].dusman2:=b
         else dusmani[a].dusman3:=b;
      if dusmani[b].dusman1=0 then dusmani[b].dusman1:=a
       else
        if dusmani[b].dusman2=0 then dusmani[b].dusman2:=a
         else dusmani[b].dusman3:=a;
    end;
  ct:=0; s[0]:=1;
  back(1);
  close(fi); close(fo);
end.