Pagini recente » Istoria paginii utilizator/novakmilan | Cod sursa (job #2820190) | Cod sursa (job #1689533) | Monitorul de evaluare | Cod sursa (job #446150)
Cod sursa(job #446150)
#include <stdio.h>
char a[1001][1001];
int st[1001];
int n, m, K;
int i, j, k;
int AS, nr;
void init (int k, int st[100])
{
st[k] = 0;
}
int am_succesor (int k, int st[100])
{
if (st[k] < n)
{
st[k] ++;
return 1;
}
return 0;
}
int e_valid (int k, int st[100])
{
for (i=1; i<k; ++i)
if (st[k] == st[i] || a[st[k]][st[k-1]] == 1)
return 0;
return 1;
}
int solutie (int k)
{
if (k == n + 1)
return 1;
return 0;
}
void tipar ()
{
for (i=1; i<=n; ++i)
fprintf (g,"%d ", st[i]);
fprintf (g,"\n");
}
void back (int k)
{
if (solutie (k))
{
nr ++;
if (nr == K)
{
tipar ();
return 0;
}
}
else
{
init (k, st);
while (am_succesor (k, st))
if (e_valid (k, st))
back (k + 1);
}
}
int main ()
{
FILE *f = fopen ("dusman.in","r");
FILE *g = fopen ("dusman.out","w");
fscanf (f,"%d %d %d", &n, &K, &m);
for (k=1; k<=m; ++k)
{
fscanf (f,"%d %d", &i, &j);
a[i][j] = a[j][i] = 1;
}
fclose(f);
back (1);
return 0;
}