Pagini recente » Cod sursa (job #2573108) | Cod sursa (job #3138821) | Cod sursa (job #647309) | Cod sursa (job #1866096) | Cod sursa (job #421905)
Cod sursa(job #421905)
#include<stdio.h>
int n,sol,st[12];
char s[12][12];
int exista(int nrg)
{
int i,j,ok[12][12]={0};
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
ok[st[i]][st[j]]|=(s[i][j]=='1');
for(i=1;i<=nrg;i++)
for(j=1;j<=nrg;j++)
if(i!=j && !ok[i][j])
return 0;
return 1;
}
void back(int k, int nrg)
{
if(k==n+1)
{
if(nrg!=1)
sol+=exista(nrg);
return;
}
int i;
for(i=1;i<=nrg;i++)
{
st[k]=i;
back(k+1,nrg);
}
st[k]=nrg+1;
back(k+1,nrg+1);
}
int main()
{
freopen("copii.in","r",stdin);
freopen("copii.out","w",stdout);
scanf("%d\n",&n);
int i;
for(i=1;i<=n;i++)
gets(s[i]+1);
back(1,0);
printf("%d\n",sol);
return 0;
}