Pagini recente » Cod sursa (job #1983528) | Cod sursa (job #1486075) | Cod sursa (job #2673329) | Cod sursa (job #60596) | Cod sursa (job #613921)
Cod sursa(job #613921)
#include<cstdio>
const int N=15;
char a[N][N];
int n,nr,s[N];
void lucru(int x)
{
int mat[N][N]={0};
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
if (a[i][j]=='1')
mat[s[i]][s[j]]=1;
for (int i=1;i<=x;i++)
for (int j=1;j<=x;j++)
if (i!=j && mat[i][j]==0)
return;
++nr;
}
void bkt(int p, int max)
{
if (p==n+1)
{
lucru(max);
return;
}
for (int i=1;i<=max;++i)
{
s[p]=i;
bkt(p+1,max);
}
s[p]=max+1;
bkt(p+1,1+max);
}
void citire()
{
freopen("copii.in","r",stdin);
freopen("copii.out","w",stdout);
scanf("%d\n",&n);
for (int i=1;i<=n;i++)
gets(a[i]+1);
}
int main()
{
citire();
bkt(1,0);
printf("%d\n",nr-1);
return 0;
}