Cod sursa(job #145408)

Utilizator alex_dincaDinca Alexandru-Nicolae - UPB alex_dinca Data 28 februarie 2008 19:51:39
Problema Dusman Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<stdio.h>

int n, k, m, i, xx, y, nr, p;
int x[1001], a[1001][4];

void citire(){
     freopen("dusman.in","r",stdin);
     scanf("%d %d %d\n", &n, &k, &m);
     for(i=1; i<=m; i++){
              scanf("%d %d\n", &xx, &y);
              a[xx][0]++;
              a[xx][a[xx][0]]=y;
              a[y][0]++;
              a[y][a[y][0]]=xx;
              }
     fclose(stdin);
     }

int cont(int k){
    for(int i=1; i<k; i++)
       if(x[i]==x[k]) return 0;
    if(k>1)
    for(i=1; i<=a[k][0]; i++){
	    if(a[x[k-1]][i]==x[k]) return 0;
            }
    return 1;
}

void bkt(int p){
     if(p==n+1 && nr<k)nr++;
     else if(nr<k)
             for(int i=1; i<=n && nr<k; i++){
                x[p]=i;
                if(cont(p)) bkt(p+1);
                }
     }
     
int main(){
    citire();
    bkt(1);
    freopen("dusman.out","w",stdout);
    for(i=1; i<=n; i++) printf("%d ",x[i]);
    printf("\n");
    fclose(stdout);
    return 0;
}