Mai intai trebuie sa te autentifici.

Cod sursa(job #136676)

Utilizator antoanelaAntoanela Siminiuc antoanela Data 15 februarie 2008 19:27:31
Problema Dusman Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.98 kb
program dusman;
var f,g:text;
    i,n,m,p:longint;
    x,y:array[1..3000]of longint;

function valid (a,b:longint):boolean;
var ok:boolean;
    i:longint;
begin
  ok:=true;
  for i:=1 to m do
  begin
      if (a=x[i])and(b=y[i])then
      begin
        ok:=false;
        break;
      end;
     if (b=x[i])and(a=y[i])then
      begin
        ok:=false;
        break;
      end;


  end;
  valid:=ok;
end;

procedure back;
var k,i,aux,ok,st,dr,c,j,o:longint;
v:array[1..1000]of longint;
begin
  k:=n-1;
  ok:=0;
  for i:=1 to n do v[i]:=i;
    o:=1;
          for i:=1 to n-1 do
            if (valid(v[i],v[i+1])=false)then
              begin
                o:=0;
                break;
              end;
          if (o=1)then c:=1 else c:=0;

  if (p=c)then
    begin
    for i:=1 to n do write(g,v[i],' ');
    end else
  while true do
    begin
        for i:=n downto k+1 do
          if (v[i]>v[k])then
            begin
              aux:=v[i];
              v[i]:=v[k];
              v[k]:=aux;
              st:=k+1;
              dr:=n;
              while (st<dr)do
                begin
                  aux:=v[st];
                  v[st]:=v[dr];
                  v[dr]:=aux;
                  inc(st);
                  dec(dr);
                end;
              ok:=1;
               break;
            end;
        if (ok=1)then begin
          o:=1;
          for i:=2 to n do
            if (valid(v[i-1],v[i])=false)then
              begin
                o:=0;
                break;
              end;
          if (o=1)then c:=c+1;
          if (c=p)then
            begin
              for j:=1 to n do write(g,v[j],' ');
              break;
            end;
          k:=n-1;
          ok:=0;
        end else
          k:=k-1;
  end;
end;
begin
assign(f,'dusman.in');
assign(g,'dusman.out');
reset(f);
rewrite(g);
read(f,n,p,m);
for i:=1 to n do read(f,x[i],y[i]);
back;
close(f);
close(g);
end.