Pagini recente » Cod sursa (job #1330039) | Cod sursa (job #2606561) | Cod sursa (job #1983511) | Cod sursa (job #3174662) | Cod sursa (job #1278905)
#include <cstdio>
#include <cstring>
using namespace std;
char a[15][15];
int x[15], mat[15][15];
int n, nr, sol;
bool validare()
{
memset(mat, 0, sizeof(mat));
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
if(a[i][j]) mat[x[i]][x[j]]=1;
for(int i=1; i<=nr; i++)
for(int j=1; j<=nr; j++)
if(i!=j && !mat[i][j]) return 0;
return 1;
}
void bkt(int k)
{
if(k>n) sol+=validare();
else
{
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);
scanf("%d", &n);
for(int i=1; i<=n; i++)
{
scanf("%s", &a[i]+1);
for(int j=1; j<=n; j++) a[i][j]=a[i][j]-'0';
}
bkt(1);
printf("%d", sol-1);
fclose(stdin);
fclose(stdout);
return 0;
}