Cod sursa(job #740036)

Utilizator valentin.harsanValentin Harsan valentin.harsan Data 24 aprilie 2012 16:19:01
Problema Copii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <cstdio>
using namespace std;

ofstream out("copii.out");

int n,sol[1<<4],cnt;
char s[1<<4][1<<4];

void citire()
{
	freopen("copii.in","r",stdin);
	scanf("%d\n",&n);
	for(int i=1;i<=n;++i)
		gets(s[i]+1);
}
void prelucrare(int x)
{
	int mat[1<<4][1<<4]={0};
	for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j)
			if(s[i][j]=='1')
				mat[sol[i]][sol[j]]=1;
	for(int i=1;i<=x;++i)
		for(int j=1;j<=x;++j)
			if (i!=j && mat[i][j]==0)
				return;
	++cnt;
	
}
void bkt(int p,int val)
{
	if(p==n+1)
	{
		prelucrare(val);
		return;
	}
	for(int i=1;i<=val;++i)
	{
		sol[p]=i;
		bkt(p+1,val);
	}
	sol[p]=val+1;
	bkt(p+1,val+1);
}

	
void work()
{
	bkt(1,0);
	out<<cnt-1;
}

int main()
{
	citire();
	work();
	return 0;
}