Pagini recente » Cod sursa (job #2613982) | Cod sursa (job #1870227) | Cod sursa (job #2128295) | Cod sursa (job #2859286) | Cod sursa (job #442519)
Cod sursa(job #442519)
#include <stdio.h>
#include <string.h>
#define Nmax 13
int a[Nmax][Nmax],leg[Nmax][Nmax];
int mul[Nmax];
int n,sol,nrm;
char s[Nmax];
void check(){
int i, j, ok=0;
if(nrm <=1 ) return;
memset(leg,0,sizeof(leg));
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
if(a[i][j])
if(!leg[mul[i]][mul[j]]){
ok++;
leg[mul[i]][mul[j]]=1;
}
if(ok >= nrm*(nrm-1) )
sol++;
}
void back(int k){
int j;
if(k>n) check();
else{
for(j=1; j<=nrm; ++j){
mul[k]=j;
back(k+1);
}
mul[k]=++nrm;
back(k+1);
--nrm;
}
}
int main(){
int i,j;
freopen("copii.in","r",stdin);
freopen("copii.out","w",stdout);
scanf("%d\n",&n);
for(i=1;i<=n;++i){
fgets(s,Nmax,stdin);
for(j=0;j<n;++j) a[i][j+1]=s[j]-'0';
}
back(1);
printf("%d\n",sol);
fclose(stdin); fclose(stdout);
return 0;
}