Pagini recente » Cod sursa (job #2313969) | Cod sursa (job #395183) | Cod sursa (job #2225425) | Cod sursa (job #1794067) | Cod sursa (job #827696)
Cod sursa(job #827696)
#include <cstdio>
#include <cstring>
using namespace std;
char d[12][12];
bool pr[12][12];
int fnd = 0;
bool gr[12][12];
int parte[12];
int grupe=0;
int gas = 0;
int n;
void check()
{
memset(gr,0,sizeof(gr));
int i,j;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
if(pr[i][j])
gr[parte[i]][parte[j]]=1;
for(i=1;i<=grupe;++i)
for(j=1;j<=grupe;++j)
if(i!=j && !gr[i][j])
return ;
++gas;
}
void back(int copil)
{
if(copil == n+1)
{
if(grupe >= 2)
check();
return ;
}
int i;
for(i=1;i<=grupe;++i)
{
parte[copil] = i;
back(copil+1);
}
++grupe;
parte[copil] = grupe;
back(copil+1);
--grupe;
}
int main()
{
freopen("copii.in","r",stdin);
freopen("copii.out","w",stdout);
int i,j;
scanf("%d\n",&n);
for(i=1;i<=n;++i)
fgets(d[i],n,stdin);
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
pr[i][j] = d[i][j-1]-48;
back(1);
printf("%d\n",gas);
return 0;
}