Pagini recente » Cod sursa (job #67279) | Cod sursa (job #1674349) | Cod sursa (job #1637094) | Cod sursa (job #2901779) | Cod sursa (job #494800)
Cod sursa(job #494800)
#include<cstdio>
const int N=30;
char a[N][N];
int n,nr,s[N],mat[N][N];
void init()
{
for (int i=0;i<N;++i)
for (int j=0;j<N;++j)
mat[i][j]=0;
}
void lucru(int x)
{
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=i+1;j<=x;++j)
if (mat[i][j]==0 || mat[j][i]==0)
return;
++nr;
init();
}
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;
}