Pagini recente » Cod sursa (job #1516650) | Cod sursa (job #1669750) | Cod sursa (job #1293505) | Cod sursa (job #2658703) | Cod sursa (job #1723527)
#include <stdio.h>
#include <stdlib.h>
int n, v[10], p[10][10], x=0;
void check(int nr)
{
int i, j, k, ok=0, ap[10];
for(i=0; i<n-1; i++)
if(v[i] != v[n-1])
ok = 1;
if(!ok)
return;
for(k=0; k<nr; k++)
{
for(i=0; i<nr; i++)
ap[i]=0;
for(i=0; i<n; i++)
if(v[i]==k)
for(j=0; j<n; j++)
if(p[i][j] == 1)
ap[v[j]]=1;
for(j=0; j<nr; j++)
if(k!=j && !ap[j])
return;
}
++x;
}
void back(int k, int nr)
{
int i;
if(k == n)
check(nr);
else
{
for(i=0; i<=nr; i++)
{
v[k] = i;
if(i==nr)
back(k+1, nr+1);
else
back(k+1, nr);
}
}
}
int main()
{
FILE *f = fopen("copii.in", "r");
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);
}
fclose(f);
back(0, 0);
FILE *g = fopen("copii.out", "w");
fprintf(g, "%d ", x);
fclose(g);
return 0;
}