Cod sursa(job #180363)

Utilizator drag0shSandulescu Dragos drag0sh Data 16 aprilie 2008 22:10:20
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.62 kb
#include <stdio.h>
FILE *f,*g;
int n,m,k,v[1001][6],cont,x[1001],uz[1001];
void citire(){
      f=fopen("dusman.in","r");
      fscanf(f,"%d %d %d ",&n,&k,&m);
      int x,y,i;
      for(i=1;i<=m;i++) {
                        fscanf(f,"%d %d",&x,&y);
                        v[x][++v[x][0]]=y;
                        v[y][++v[y][0]]=x;
                        }
      // fprintf(g,"%d %\n",m);
//  //     for(i=1;i<=n;i++) {
     //                   fprintf(g,"%d %d %d %d\n",m,v[i][1],v[i][2],v[i][3]);
    //                    }
      fclose(f);
     }
     
void afisare(){
     int i;
     for(i=1;i<=n;i++) fprintf(g,"%d ",x[i]);
    // fprintf(g,"\n",x[i]);
     
     }
int ok;
void back(int e){
     if(ok)return;
     if(e==n+1){cont++;if(cont==k){afisare();ok=1;}}
     else{
          int j,q;
          for(j=1;j<=n;j++){q=x[e-1];
                            if(v[q][1]!=j &&v[q][2]!=j&&v[q][3]!=j&&!uz[j]){
                                                                           uz[j]=1;
                                                                           x[e]=j;
                                                                           back(e+1);
                                                                           uz[j]=0;
                                                                           }
                            }
     }                        
}
                                                                          


int main(){
    g=fopen("dusman.out","w");
    citire();
//   fprintf(g,"barab");
    back(1);
    fclose(g);
    return 0;
}