Pagini recente » Cod sursa (job #83882) | Cod sursa (job #686066) | Cod sursa (job #818085) | Cod sursa (job #1293925) | Cod sursa (job #2036232)
#include <cstdio>
using namespace std;
int v[11],nrmax=0,n,sol=0,a[15][15],ok[15][15];
void afis()
{
if(nrmax==1)
return;
for(int i=1;i<=10;++i)
for(int j=1;j<=10;++j)
ok[i][j]=0;
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
if(a[i][j]==1)
ok[v[i]][v[j]]=1;
}
}
for(int i=1;i<=nrmax;++i)
for(int j=1;j<=nrmax;++j)
{
if(ok[i][j]==0&&i!=j)
return;
}
++sol;
return;
}
void bkt(int k)
{
for(int i=1;i<=nrmax + 1;++i)
{
v[k]=i;
//if(i==nrmax&&k!=n)
if(k!=n)
{
if (i == nrmax + 1)
{
++nrmax;
bkt(k + 1);
--nrmax;
}
else
{
bkt(k+1);
}
}
else
{
if(i==nrmax+1)
{
++nrmax;
afis();
--nrmax;
}
else
afis();
}
}
}
int main()
{
freopen("copii.in","r",stdin);
freopen("copii.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
scanf("%1d",&a[i][j]);
}
}
bkt(1);
printf("%d",sol);
return 0;
}