Cod sursa(job #1496674)

Utilizator CodrutLemeniCodrut Lemeni CodrutLemeni Data 5 octombrie 2015 12:48:03
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.59 kb
#include <algorithm>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

struct rai{
    int a,b;
};

int compare(struct rai A, struct rai B){
    return A.a < B.a;
}

int mark[1010];
int coloana[1010];
int n,k,m;
struct rai dusman[3010];

int verif(int level){
    int i;
    if(level==1){
        return 1;
    }
    for(i=1;i<=m;i++){
        if( (coloana[level-1]==dusman[i].a && coloana[level]==dusman[i].b) ||
            (coloana[level-1]==dusman[i].b && coloana[level]==dusman[i].a)  )
            {
                return 0;
            }
    }
    return 1;
}

void genperm(int level){
    int i,j,rez;

    for(i=1;i<=n;i++){
       if(mark[i]==0){
            coloana[level]=i;
            rez=verif(level);
            if(rez==0){
                coloana[level]=0;
                continue;
            }
            mark[i]=1;
            if(level==n){
                //k--;
                if(k!=0){
                    for(j=1;j<=n;j++){
                        printf("%d ",coloana[j]);
                    }
                    printf("\n");
                }
            }else{
                genperm(level+1);
            }
       }else{
            continue;
       }
        mark[i]=0;
        coloana[level]=0;
    }

}

int main()
{
    int i;

    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",&dusman[i].a,&dusman[i].b);
    }

    genperm(1);

   // sort(dusman+1, dusman+m, compare);

    return 0;
}