Pagini recente » Cod sursa (job #2100969) | Cod sursa (job #166464) | Cod sursa (job #302264) | Cod sursa (job #2528764) | Cod sursa (job #1278914)
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
char a[12][12];
int x[12], mat[12][12];
int n, nr, sol;
int validare()
{
int i, j;
memset(mat, 0, sizeof(mat));
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
if(a[i][j]) mat[x[i]][x[j]]=1;
for(i=1; i<=nr; i++)
for(j=1; j<=nr; j++)
if(i!=j && !mat[i][j]) return 0;
return 1;
}
void bkt(int k)
{
if(k==n+1)
{
sol+=validare();
return;
}
for(int i=1; i<=nr; i++)
{
x[k]=i;
bkt(k+1);
}
x[k]=++nr;
bkt(k+1);
--nr;
}
int main()
{
freopen("copii.in", "r", stdin);
freopen("copii.out", "w", stdout);
int i, j;
cin>>n;
for(i=1; i<=n; i++)
{
cin>>(a[i]+1);
for(j=1; j<=n; j++) a[i][j]-='0';
}
bkt(1);
cout<<sol-1;
return 0;
}