Pagini recente » Cod sursa (job #2392935) | Cod sursa (job #1868021) | Cod sursa (job #813953) | Cod sursa (job #468526) | Cod sursa (job #446411)
Cod sursa(job #446411)
#include <stdio.h>
char a[10001][10001];
int st[1001], siraux[10001];
int n, m, K;
int i, j, k;
int AS, nr;
int Am_Succesor ()
{
if (st[k] < n)
{
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)
{
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;
st[k] = 0;
k --;
}
}
fclose(g);
return 0;
}