Pagini recente » Cod sursa (job #526341) | Cod sursa (job #2668508) | Cod sursa (job #3176335) | Cod sursa (job #1146813) | Cod sursa (job #1636505)
#include <stdio.h>
#include <stdlib.h>
int n,i,j,nrsol,nc;
int v[15];
int a[15][15];
int r[15][15];
void verifica(){
int i,j;
if (nc<=1){
return;
}
for (i=1; i<=nc; i++){
for (j=1; j<=nc; j++){
r[i][j]=0;
}
r[i][i]=1;
}
for (i=1; i<=n; i++){
for (j=1; j<=n; j++){
if (a[i][j]==1 && j!=i && v[i]!=v[j]){
r[v[i]][v[j]]=1;
}
}
}
for (i=1; i<=nc; i++){
for (j=1; j<=nc; j++){
if (r[i][j]==0) return;
}
}
nrsol++;
}
void generare(int k){
int j;
if (k==n+1){
verifica();
}else{
for (j=1; j<=nc; j++){
v[k]=j;
generare(k+1);
}
nc++;
v[k]=nc;
generare(k+1);
nc--;
}
}
int main(){
char c;
freopen("copii.in","r",stdin);
freopen("copii.out","w",stdout);
scanf("%d",&n);
for (i=1; i<=n; i++){
for (j=1; j<=n; j++){
scanf("%c",&c);
a[i][j]=c-'0';
}
}
generare(1);
printf("%d",nrsol+1);
return 0;
}