Cod sursa(job #181193)

Utilizator Mishu91Andrei Misarca Mishu91 Data 17 aprilie 2008 23:22:52
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
#define Nmax 1001
#define IN "dusman.in"
#define OUT "dusman.out"

char viz[Nmax];

int cnt,sol[Nmax];
int N,K,M,A[Nmax][Nmax];

bool flag;

void afisare()
{
  for(int i=0; i<N; i++)
    printf("%d ",sol[i]);
    
  printf("\n");
}

void back(int k)
{
  if(k == N)
  {
    if(++cnt == K)
    {
      afisare();
      flag = true;
    }
      
    return; 
  }
  
  if(!flag)
  
  for(int i=1; i<=N; i++)
  {
    if(viz[i]) continue;
    if((A[sol[k-1]][i] || A[i][sol[k-1]]) && k) continue;
    
    sol[k] = i;
    viz[i] = 1;
    
    back(k+1);
    
    viz[i] = 0;
  }
  
}



int main()
{
  freopen(IN,"r",stdin);
  freopen(OUT,"w",stdout);
  
  int x,y;
  
  scanf("%d %d %d",&N,&K,&M);
  
  for(int i=0; i<M; i++)
  {
    scanf("%d %d",&x,&y);
    A[x][y] = A[y][x] = 1;
  }
  
  back(0);
}