Pagini recente » Cod sursa (job #1138915) | Cod sursa (job #1045203) | Cod sursa (job #2269372) | Cod sursa (job #2566935) | Cod sursa (job #1562500)
#include <iostream>
#include <cstdio>
#include <cstring>
#define maxN 15
using namespace std;
int n, nrg, ans;
char s[maxN][maxN];
int st[maxN], v[maxN][maxN];
int solutie(){
int i, j;
memset(v,0,sizeof(v));
if (nrg==1) return 0;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
if (s[i][j]=='1' && st[i]!=st[j])
v[st[i]][st[j]]=1;
for (i=1; i<=nrg; i++)
for (j=1; j<=nrg; j++)
if (i!=j && v[i][j]==0)
return 0;
return 1;
}
void backt(int k){
int i;
if (k==n+1){
if (solutie())
ans++;
}
else{
for (i=1; i<=nrg; i++){
st[k]=i;
backt(k+1);
}
nrg++;
st[k]=nrg;
backt(k+1);
nrg--;
}
}
int main(){
int i;
freopen("copii.in", "r", stdin);
freopen("copii.out", "w", stdout);
scanf("%d\n", &n);
for (i=1; i<=n; i++)
gets(s[i]+1);
backt(1);
printf("%d", ans);
return 0;
}