Pagini recente » Cod sursa (job #1434617) | Cod sursa (job #7103) | Cod sursa (job #3223726) | Cod sursa (job #1972258) | Cod sursa (job #2302372)
#include <cstdio>
using namespace std;
int dusmani[1001][4], nrSolutie, v[1001], folositi[1001];
void backtracking(int nivel, int &n, int k, FILE* out)
{
if (nivel == n + 1)
{
nrSolutie++;
if (nrSolutie == k)
{
for (int i = 1 ; i <= n ; i++)
{
fprintf(out,"%d ",v[i]);
}
n = 0;
}
}
else
{
for (int i = 1 ; i <= n ; i++)
{
if (folositi[i] == 0 && dusmani[v[nivel - 1]][1] != i && dusmani[v[nivel - 1]][2] != i && dusmani[v[nivel - 1]][3] != i)
{
folositi[i] = 1;
v[nivel] = i;
backtracking(nivel + 1,n,k,out);
folositi[i] = 0;
v[nivel] = 0;
}
}
}
}
int main()
{
FILE* in = fopen("dusman.in","r");
FILE* out = fopen("dusman.out","w");
int n(0), k(0), m(0);
fscanf(in,"%d %d %d",&n,&k,&m);
for (int i = 1 ; i <= m ; i++)
{
int a(0), b(0);
fscanf(in,"%d %d",&a,&b);
dusmani[a][++dusmani[a][0]] = b;
dusmani[b][++dusmani[b][0]] = a;
}
backtracking(1,n,k,out);
}