Pagini recente » Monitorul de evaluare | Cod sursa (job #2273704) | Cod sursa (job #2129932) | Cod sursa (job #1873530) | Cod sursa (job #1980936)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("dusman.in");
ofstream out("dusman.out");
const int maxn = 1005;
bool M[maxn][maxn];
bool pus[maxn];
int sol[maxn];
int n, k;
int cnt = 0;
void afis()
{
for(int i = 1; i <= n; i++)
out << sol[i] << " ";
out << "\n";
}
void _back_(int poz)
{
if(cnt >= k)
return;
if(poz == n + 1)
{
/*
for(int i = 1; i <= n; i++)
cerr << sol[i] << " ";
cerr << "\n";
*/
cnt++;
if(cnt == k)
afis();
return;
}
for(int i = 1; i <= n; i++)
{
if(!pus[i] && M[sol[poz - 1]][i] == 0)
{
sol[poz] = i;
pus[i] = 1;
_back_(poz + 1);
pus[i] = 0;
}
}
}
int main()
{
int m;
in >> n >> k >> m;
for(int i = 1; i <= m; i++)
{
int x, y;
in >> x >> y;
M[x][y] = 1;
M[y][x] = 1;
}
_back_(1);
return 0;
}