Nu aveti permisiuni pentru a descarca fisierul grader_test8.in
Cod sursa(job #113348)
Utilizator | Data | 9 decembrie 2007 18:23:25 | |
---|---|---|---|
Problema | Dusman | Scor | Ascuns |
Compilator | cpp | Status | done |
Runda | Marime | 1.02 kb |
#include <stdio.h>
#include <assert.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);
assert(1 <= N && N <= 1000);
assert(1 <= M && M <= 50);
assert(1 <= K && K <= 10000);
for (; M; --M)
{
scanf("%d %d", &i, &j);
assert(1 <= i && i <= N);
assert(1 <= j && j <= N);
G[i][j] = G[j][i] = 1;
}
bkt(0);
return 0;
}