Cod sursa(job #1497197)

Utilizator CodrutLemeniCodrut Lemeni CodrutLemeni Data 6 octombrie 2015 13:53:41
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <algorithm>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

bool dusman[1002][1002];
int mark[1010];
int coloana[1010];
int n,k,m;

int verif(int level){
    int i;
    if(level==1){
        return 1;
    }
    if(dusman[coloana[level]][coloana[level-1]]==1){
        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");
                    break;
                }
            }else{
                genperm(level+1);
            }
       }else{
            continue;
       }
        mark[i]=0;
        coloana[level]=0;
    }

}

int main()
{
    int i,a,b;

    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);
        dusman[a][b]=1;
        dusman[b][a]=1;
    }

    genperm(1);

    return 0;
}