Pagini recente » Cod sursa (job #1920447) | Cod sursa (job #922139) | Cod sursa (job #1433143) | Cod sursa (job #739424) | Cod sursa (job #698865)
Cod sursa(job #698865)
#include <cstdio>
#define NMAX 12
int sol[NMAX], nrsol, c[NMAX][NMAX]; //c[i][j] = 1 daca echipa i are un prieten din echipa j
char a[NMAX][NMAX];
int n;
int check(int g)
{
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
{
c[i][j] = 0;
}
for(int i=0;i<n;++i)
{
for(int j=0;j<n;++j)
{
if(a[i][j] == '1')
c[sol[i+1]][sol[j+1]] = 1;
}
}
for(int i=1;i<=g;++i)
{
for(int j=1;j<=g;++j)
{
if(!c[i][j] && i!=j)
{
return 0;
}
}
}
return 1;
}
void back(int k, int g)
{
if(k == n + 1)
{
if(g >= 2 && check(g))
{
nrsol++;
}
}
else
{
for(int i=1;i<=g;++i)
{
sol[k] = i;
back(k+1, g);
}
sol[k] = g+1;
back(k+1,g+1);
}
}
int main()
{
freopen("copii.in", "r", stdin);
freopen("copii.out", "w", stdout);
scanf("%d", &n);
for(int i=0;i<n;++i)
{
scanf("%s", a[i]);
}
sol[1] = 1;
back(1,0);
printf("%d", nrsol);
return 0;
}