Pagini recente » Cod sursa (job #2687111) | Cod sursa (job #1894571) | Cod sursa (job #2644073) | Cod sursa (job #1756008) | Cod sursa (job #283557)
Cod sursa(job #283557)
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
#define INPUT "dusman.in"
#define OUTPUT "dusman.out"
#define pb push_back
#define VI vector<int>
const int NMAX = 1001;
FILE *fin = fopen(INPUT, "r"), *fout = fopen(OUTPUT, "w");
int N, M, K, cont, ending;
int st[ NMAX ], vis[ NMAX ];
VI A[ NMAX ];
VI::iterator it;
void readData()
{
int X, Y;
fscanf(fin, "%d %d %d", &N, &K, &M);
for(int i = 0; i < M; ++i)
{
fscanf(fin, "%d %d", &X, &Y);
A[ X ].pb(Y);
A[ Y ].pb(X);
}
}
void back(int P)
{
int ok;
if(ending) return;
if(P == N + 1)
{
++cont;
if(cont == K)
for(int i = 1; i <= N; ++i) fprintf(fout, "%d ", st[ i ]);
}
for(int i = 1; i < P; ++i)
fprintf(stderr, "%d ", st[ i ]);
fprintf(stderr, "\n");
for(int i = 1; i <= N; ++i)
if(!vis[ i ])
{
if(P >= 2)
{
ok = 1;
for(it = A[ st[ P-1 ] ].begin(); it != A[ st[ P-1 ] ].end() && ok; ++it)
if(*it == i) ok = 0;
if(!ok) continue;
}
vis[ i ] = 1;
st[ P ] = i;
back( P + 1 );
if(ending) return;
vis[ i ] = 0;
}
}
int main()
{
readData();
cont = 0, ending = 0;
back(1);
fclose(fin);
fclose(fout);
return 0;
}