Pagini recente » Istoria paginii runda/sigma | Profil Motociclentziu | Cod sursa (job #1783857) | Cod sursa (job #1192790) | Cod sursa (job #1723483)
#include <stdio.h>
#include <stdlib.h>
int n, v[10], a[10][10], p[10][10], x=0;
int valid(int nr)
{
int i, j;
for(i=0; i<nr; i++)
for(j=0; j<nr; j++)
a[i][j] = 0;
for(i=0; i<n; i++)
for(j=0; j<n; j++)
if(p[i][j] == 1)
a[v[i]][v[j]] = 1;
for(i=0; i<nr; i++)
for(j=0; j<nr; j++)
if(i!=j && !a[i][j])
return 0;
return 1;
}
void afisare(int nr, FILE *g)
{
int i, ok=0;
for(i=0; i<n-1; i++)
if(v[i] != v[n-1])
ok = 1;
if(!ok)
return;
if(!valid(nr))
return;
++x;
//for(i=0; i<n; i++)
// fprintf(g, "%d ", v[i]);
//fputc('\n', g);
}
void back(int k, int nr, FILE *g)
{
int i;
if(k == n)
afisare(nr, g);
else
{
for(i=0; i<=nr; i++)
{
v[k] = i;
if(i==nr)
back(k+1, nr+1, g);
else
back(k+1, nr, g);
}
}
}
int main()
{
FILE *f = fopen("copii.in", "r");
FILE *g = fopen("copii.out", "w");
int i, j;
fscanf(f, "%d", &n); fgetc(f);
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
p[i][j] = fgetc(f) - '0';
fgetc(f);
}
back(0, 0, g);
fprintf(g, "%d ", x);
fclose(f);
fclose(g);
return 0;
}