Cod sursa(job #168053)

Utilizator tm_raduToma Radu tm_radu Data 30 martie 2008 17:28:45
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <stdio.h>

int ok = 0;
int n, m, K;
int x[1001];
int s[1001];
int a[1001][1001];
int i, j, h;
int nrs;

void Back(int k);
void Write();

int main()
{
    freopen("dusman.in", "r", stdin);
    freopen("dusman.out", "w", stdout);
    scanf("%d %d %d", &n, &K, &m);
    for ( h = 1; h <= m; h++ )
        scanf("%d %d", &i, &j),
        a[i][j] = a[j][i] = 1;
    Back(1);
    
    return 0;
}

void Back(int k)
{
    if ( ok ) return; 
    for ( int i = 1; i <= n; i++ )
    {
        x[k] = i;
        if ( ok ) return;
        if ( !s[i] && !a[i][x[k-1]] )
        {
            s[i] = 1;
            if ( k == n ) 
            {
                nrs++;
                if ( nrs == K ) ok = 1, Write();
            }
            else Back(k+1);
            s[i] = 0;
        }           
    }
}

void Write()
{
    for ( int j = 1; j <= n; j++ )
        printf("%d ", x[j]);
    printf("\n");
}