Pagini recente » Cod sursa (job #1432617) | Cod sursa (job #1626981) | Cod sursa (job #2023317) | Cod sursa (job #316968) | Cod sursa (job #422511)
Cod sursa(job #422511)
#include<stdio.h>
#include<string.h>
#define maxim(a,b) (a>b ? a : b)
int n,bc[14],sol;
char s[14][14];
int col[14][14];
int verifica(int gr)
{
int i,j;
if(gr==1)
return 0;
memset(col,0,sizeof(col));
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(bc[i]==bc[j])
continue;
if(s[i][j-1]=='1')
col[bc[i]][bc[j]]=1;
}
for(i=1;i<=gr;i++)
for(j=1;j<=gr;j++)
if(!col[i][j] && i!=j)
return 0;
return 1;
}
void back(int poz,int gr)
{
int i;
if(poz==n+1)
{
sol+=verifica(gr);
return ;
}
for(i=1;i<=gr+1;i++)
{
bc[poz]=i;
back(poz+1,maxim(i,gr));
}
}
int main ()
{
int i;
freopen("copii.in","r",stdin);
freopen("copii.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%s",s[i]);
back(1,0);
printf("%d\n",sol);
return 0;
}