Cod sursa(job #119751)

Utilizator gigi_becaliGigi Becali gigi_becali Data 3 ianuarie 2008 01:11:38
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
#include <string>
#include <cstdlib>
#define maxn 1001
int x[maxn];
bool a[maxn][maxn];
bool use[maxn];
int N, K, m;
int nr;
void read()
{
  freopen("dusman.in","r",stdin);
  freopen("dusman.out","w",stdout);
  scanf("%d %d %d\n", &N, &K, &m);
  int p, q;

  while(m--)
    {
      scanf("%d %d\n", &p, &q);
      a[p][q]=a[q][p]=1;
    }
}

inline void afis()
{
  ++nr;
  // printf("%d\n", nr);
  if(nr==K)
    {
      for(int i=1;i<=N;++i) printf("%d ", x[i]);
      printf("\n");
      exit(0);
    }
}

inline void back(int k)
{
  if(k==N+1) afis();
  else
    {
      if(k==1)for(int i=1;i<=N;++i) { use[i]=1;x[k]=i; back(k+1); use[i]=0;}
      else
	
	for(int i=1;i<=N;++i) 
	  if(!use[i] && !a[x[k-1]][i])
	    {
	      use[i]=1;
	      x[k]=i;
	      back(k+1);
	      use[i]=0;
	    }
    }
}

int main()
{

  read();
  back(1);

  return 0;
}