Cod sursa(job #559573)

Utilizator CyberneticLordMunteanu Valentin CyberneticLord Data 17 martie 2011 21:55:26
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
#include<cstdio>
using namespace std;
int i,j,n,k,m,d[1001][1001],v[1001],r,a,b,viz[1001],t,ok; 
void afisare(int r)
{
  for(int i=1;i<=r;i++) printf("%d ",v[i]);
  printf("\n");
} 
/* 
int valid(int r)
{
    if(d[v[r]][v[r-1]]==1 || viz[v[r]]==1 ) return 0;
    return 1;
}
int solutie(int r)
{
    if(r==n) return 1;
    return 0;  
}

void back()
{
    r=1;
    v[r]=0;
    while(r>=1)
       if(v[r]<n)
       {
           v[r]++;
            
           if(valid(r))
           {
               viz[v[r]]=1;
               if(solutie(r)) {t++;
                              if(t==k) {afisare(r);return ;}
                                viz[v[r]] = 0;
                              }
            
            else v[++r]=0;
       }
       }
       else
       {r--;
       viz[v[r]] = 0;
       }
       
*/
void back(int g)
{
 if(ok==1) return;
      if(g==n+1) { t++; if(t==k)  { afisare(g-1);ok=1;return; } }
      else for(int i=1;i<=n;i++)
          if(d[i][v[g-1]]==0 && viz[i]==0)
           {  
              v[g]=i;
              viz[i]=1;
              back(g+1);
              viz[i]=0;    
           }
           
}      

int main()
{
     
    freopen("dusman.in","r",stdin);
    freopen("dusman.out","w",stdout);
    scanf("%d%d%d",&n,&k,&m);
    for(i=1;i<=m;i++) {  scanf("%d%d",&a,&b); d[a][b]=1; d[b][a]=1; }
     
    back(1);
     
   return 0;
}