Pagini recente » Cod sursa (job #827932) | Cod sursa (job #2067037) | Cod sursa (job #566334) | Cod sursa (job #2415526) | Cod sursa (job #446409)
Cod sursa(job #446409)
#include <stdio.h>
char a[10001][10001];
int st[1001];
int n, m, K;
int siraux[10001];
int i, j, k;
int AS, nr;
int Am_Succesor ()
{
if (st[k] < n)
{
// siraux[st[k]] = 0;
st[k] ++;
return 1;
}
return 0;
}
int E_Valid ()
{
if (siraux[st[k]] == 1 || a[st[k]][st[k-1]] == 1)
{
return 0;
}
return 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);
k = 1;
st[k] = 0;
while (k > 0 && nr <= K)
{
int m = st[k];
do
{ }
while ( (AS = Am_Succesor ()) && !E_Valid());
if (AS)
{
siraux[m] = 0;
siraux[st[k]] = 1;
if (k == n)
{
nr ++;
if (nr == K)
{
for (i=1; i<=k; ++i)
fprintf (g,"%d ", st[i]);
fprintf (g,"\n");
break;
}
}
else
{
k ++;
st[k] = 0;
}
}
else
{
siraux[m] = 0;
//siraux[st[k]] = 0;
st[k] = 0;
k --;
}
}
return 0;
}