Cod sursa(job #116265)

Utilizator juniorOvidiu Rosca junior Data 18 decembrie 2007 11:01:53
Problema Dusman Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.54 kb
var
	fi, fo : text;
  a : array [0..1000] of integer;
  d : array [1..1000,1..3] of integer; {relatiile de dusmanie}
  nd : array [1..1000] of byte; {numarul de dusmani pentru fiecare om}
  liber : array [1..1000] of boolean;
  n, k, m, x, y, asezari, i : integer;
  gata : boolean;

function cont (i : integer) : boolean;
var
	c : boolean;
  j : byte;
begin
	c := true;
  for j := 1 to nd[a[i]] do
  	if d[a[i],j] = a[i-1] then
    	c := false;
  cont := c	
end;
procedure back (i : integer);
var
   j, l : integer;
begin
	if i = n+1 then
  	begin
    	inc(asezari);
      if asezari = k then
      	begin
        	for l := 1 to n do
          	write(fo, a[l], ' ');
          gata := true
        end
    end
  else
  	begin
    	j := 1;
      while (j <= n) and (not gata) do
      	begin
        	if liber[j] then
          	begin
            	a[i] := j;
              if cont(i) then
              	begin
                	liber[a[i]] := false;
              		back (i+1);
                  liber[a[i]] := true
                end	
            end;
          inc(j)
        end
    end
end;
{------------------------}
begin
	assign(fi,'dusman.in'); reset(fi);
  assign(fo,'dusman.out'); rewrite(fo);
	readln(fi,n,k,m);
  for i := 1 to n do
  	liber[i] := true;
  for i := 1 to m do
  	begin
  		readln(fi, x, y);
      inc(nd[x]); d[x,nd[x]] := y;
      inc(nd[y]); d[y,nd[y]] := x;
    end;
  a[0] := -1; { In cont, a[1] nu va putea fi considerat dusman cu a[0]. }
  back(1);
  close(fi); close(fo);
end.