Cod sursa(job #494802)

Utilizator Teodor94Teodor Plop Teodor94 Data 22 octombrie 2010 23:11:32
Problema Copii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<cstdio>

const int N=15;

char a[N][N];
int n,nr,s[N];

void lucru(int x)
{
	int mat[N][N]={0};
	for (int i=1;i<=n;i++)
		for (int j=1;j<=n;j++)
			if (a[i][j]=='1')
				mat[s[i]][s[j]]=1;
	for (int i=1;i<=x;i++)
		for (int j=1;j<=x;j++)
			if (i!=j && mat[i][j]==0)
				return;
	++nr;
}

void bkt(int p, int max)
{
	if (p==n+1)
	{
		lucru(max);
		return;
	}
	for (int i=1;i<=max;++i)
	{
		s[p]=i;
		bkt(p+1,max);
	}
	s[p]=max+1;
	bkt(p+1,1+max);
}

void citire()
{
	freopen("copii.in","r",stdin);
	freopen("copii.out","w",stdout);
	scanf("%d\n",&n);
	for (int i=1;i<=n;i++)
		gets(a[i]+1);
}

int main()
{
	citire();
	bkt(1,0);
	printf("%d\n",nr-1);
	return 0;
}