Pagini recente » Cod sursa (job #1189940) | Cod sursa (job #1793556) | Cod sursa (job #956064) | Istoria paginii utilizator/teofilos | Cod sursa (job #1553463)
#include <stdio.h>
#define lim 20
int n,m,sol,st[lim],mat[lim][lim],v[lim][lim];
int verif(){
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
v[i][j]=0;
if(mat[i][j]==1&&st[i]!=st[j])
v[st[i]][st[j]]=1;
}
for(i=1;i<=m;i++)
for(j=1;j<=m;j++)
if(i!=j&&v[i][j]==0)
return 0;
return 1;
}
void bkt(int k){
int i;
if(k==n+1)
sol+=verif();
else{
for(i=1;i<=m;i++){
st[k]=i;
bkt(k+1);
}
m++;
st[k]=m;
bkt(k+1);
m--;
}
}
int main(){
freopen("copii.in","r",stdin);
freopen("copii.out","w",stdout);
int i,j;
char c;
scanf("%d\n",&n);
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
scanf("%c",&c);
if(c=='1')
mat[i][j]=1;
}
scanf("\n");
}
bkt(1);
sol--;
printf("%d",sol);
return 0;
}