Pagini recente » Cod sursa (job #1113468) | Cod sursa (job #770427) | Cod sursa (job #2776893) | Cod sursa (job #3175884) | Cod sursa (job #1593880)
#include <cstdio>
#include <cstring>
using namespace std;
int n, nrg, ans;
char s[15][15];
int st[15], v[15][15];
void backt(int k){
int i, j, ok;
if(k==n+1){
if(nrg==1) return;
for(int i=1; i<=n; ++i)
for(int j=1; j<=n; ++j){
v[i][j]=0;
if(s[i][j]=='1'&&st[i]!=st[j])
v[st[i]][st[j]]=1;
}
ok=1;
for(int i=1; i<=nrg; ++i)
for(int j=1; j<=nrg; ++j)
if(i!=j&&v[i][j]==0){
ok=0;
return;
}
if(ok) ++ans;
}
else{
for(int i=1; i<=nrg; ++i){
st[k]=i;
backt(k+1);
}
++nrg;
st[k]=nrg;
backt(k+1);
--nrg;
}
}
int main(){
freopen("copii.in", "r", stdin);
freopen("copii.out", "w", stdout);
scanf("%d\n", &n);
for(int i=1; i<=n; i++)
gets(s[i]+1);
backt(1);
printf("%d", ans);
return 0;
}