Pagini recente » Arhiva de probleme | Monitorul de evaluare | Cod sursa (job #994953) | Cod sursa (job #183845) | Cod sursa (job #204449)
Cod sursa(job #204449)
#include <stdio.h>
const int N_MAX = 1024;
int N, K, found = 0;
int d[N_MAX][N_MAX], is[N_MAX], st[N_MAX];
void back(int lev)
{
if (!found) {
if (lev == N + 1) {
K --;
if (K == 0) {
for (int i = 1; i <= N; i ++) printf("%d ", st[i]);
found = 1;
}
} else {
for (int c = 1; c <= N; c ++) {
if (!is[c] && !d[c][st[lev - 1]]) {
is[c] = 1;
st[lev] = c;
back(lev + 1);
is[c] = 0;
}
}
}
}
}
int main()
{
freopen("dusman.in", "r", stdin);
#ifndef _SCREEN_
freopen("dusman.out", "w", stdout);
#endif
int M, x, y;
scanf("%d %d %d\n", &N, &K, &M);
for (int i = 1; i <= M; i ++) {
scanf("%d %d\n", &x, &y);
d[y][x] = 1;
d[x][y] = 1;
}
back(1);
return 0;
}