Cod sursa(job #1117301)

Utilizator rughibemBelcineanu Alexandru Ioan rughibem Data 23 februarie 2014 13:10:22
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<stdio.h>
#define DIM 1005
FILE *f=fopen("dusman.in","r"), *g=fopen("dusman.out","w");

long int n, k, m, a[DIM][DIM], used[DIM], st[DIM], stop=0;

    // a[ i ][ j ] = daca i si j sunt dusmani (1) sau nu (0)
    // used = daca a fost utilizat nr sau nu
    // st = asezarea

void citire(){
long int i, x, y;

    fscanf(f,"%ld %ld %ld\n",&n,&k,&m);
    for(i=1;i<=m;i++){
        fscanf(f,"%ld %ld\n",&x,&y);
        a[x][y]=1; a[y][x]=1;
    }

}

void adauga(){

    k--;
    if( k==0 ){  for(long int i=1;i<=n;i++){fprintf(g,"%ld ",st[i]);}
                 stop=1;                                                }

}

void back(long int h){
long int i;

    if( h>n ) adauga();
    else{

        for(i=1;i<=n;i++){

            if( used[i]==0 && a[ i ][ st[h-1] ]==0 ){
                used[i]=1; st[h]=i;
                back(h+1);
                used[i]=0;
                if(stop==1) return;
            }

        }

    }

}

int main(){

    citire();
    back(1);

return 0;
}