Pagini recente » Cod sursa (job #771344) | Cod sursa (job #2915840) | Cod sursa (job #3220964) | Istoria paginii utilizator/alexia.florea | Cod sursa (job #424744)
Cod sursa(job #424744)
#include<stdio.h>
#include<bitset>
using namespace std;
int i,j,n,m,gr,grup[20],rez;
char a[20][20];
bitset<20> pgr[20];
int verifica(int gr)
{
for(int i=1;i<=gr;++i)
for(int j=1;j<=gr;++j) pgr[i][j]=0;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if(a[i][j])
pgr[ grup[i] ][ grup[j]] =1;
for(int i=1;i<=gr;++i)
for(int j=1;j<=gr;++j)
if(i!=j&&!pgr[i][j]) return 0;
return 1;
}
void back(int i,int gr)
{
if(i>n)
{
if(gr>=2&&verifica(gr)) rez++;
return ;
}
for(int j=1;j<=gr;++j)
{
grup[i]=j;
back(i+1,gr);
}
grup[i]=gr+1;
back(i+1,gr+1);
}
int main()
{
freopen("copii.in","r",stdin);
freopen("copii.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;++i)
{ scanf("%s",a[i]+1);
for(j=1;j<=n;++j) a[i][j]-='0';
}
back(1,0);
printf("%d\n",rez);
fclose(stdin);
fclose(stdout);
return 0;
}