Cod sursa(job #113331)

Utilizator dominoMircea Pasoi domino Data 9 decembrie 2007 18:01:38
Problema Dusman Scor Ascuns
Compilator cpp Status done
Runda Marime 0.83 kb
#include <stdio.h>

#define MAX_N 1024
#define FIN "dusman.in"
#define FOUT "dusman.out"

int N, M, K, stk[MAX_N], cnt;
char G[MAX_N][MAX_N], U[MAX_N];

int bkt(int lv)
{
    int i;

    if (lv == N)
    {
        if (++cnt < K) return 0;
        for (i = 0; i < N; ++i)
            printf("%d ", stk[i]);
        printf("\n");
        return 1;
    }

    for (i = 1; i <= N; ++i)
    {
        if (U[i] || (lv > 0 && G[i][stk[lv-1]])) continue;
        U[stk[lv] = i] = 1;
        if (bkt(lv+1)) return 1;
        U[i] = 0;
    }
    return 0;
}

int main(void)
{
    int i, j;

    freopen(FIN, "r", stdin);
    freopen(FOUT, "w", stdout);

    scanf("%d %d %d", &N, &K, &M);
    for (; M; --M)
    {
        scanf("%d %d", &i, &j);
        G[i][j] = G[j][i] = 1;
    }

    bkt(0);

    return 0;
}