Cod sursa(job #115684)

Utilizator filipbFilip Cristian Buruiana filipb Data 16 decembrie 2007 20:16:12
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <stdio.h>

#define NMax 1005

int N, K, M;
int D[NMax][3], deg[NMax], st[NMax], uz[NMax];

int dusman(int x, int y)
{
    int i;

    for (i = 0; i < deg[x]; i++)
        if (D[x][i] == y)
            return 1;
    return 0;
}

void back(int nivel)
{
    int i;
    
    if (nivel == N+1)
    {
        K--;
        if (!K)
        {
            for (i = 1; i <= N; i++)
                printf("%d ", st[i]);
            printf("\n");
        }
        
        return ;
    }

    for (i = 1; K && i <= N; i++)
        if (!uz[i] && !dusman(st[nivel-1], i))
        {
            st[nivel] = i;
            uz[i] = 1;
            back(nivel+1);
            uz[i] = 0;
        }
}

int main(void)
{
    int i, j;
    
    freopen("dusman.in", "r", stdin);
    freopen("dusman.out", "w", stdout);

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

    back(1);

    return 0;
}