Cod sursa(job #557319)

Utilizator siminescuPaval Cristi Onisim siminescu Data 16 martie 2011 16:15:46
Problema Copii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<fstream>
using namespace std;

ifstream f("copii.in");
ofstream g("copii.out");

# define nmax 12

char P[nmax][nmax];
int C[nmax],N;
long long POS=0;

void citire()
{
	f>>N;f.get();
	int i;
	for(i=1;i<=N;++i)
		f>>P[i]+1;
}
int verif(int nrg)
{
	int i,j;
	char G[nmax][nmax]={0};
	for(i=1;i<=N;++i)
		for(j=1;j<=N;++j)
			if(P[i][j]=='1')
				G[C[i]][C[j]]=1;
	for(i=1;i<=nrg;++i)
		for(j=1;j<=nrg;++j)
			if(G[i][j]==0 && j!=i) return 0;
	return 1;
}
void bec(int k,int nrg)
{
	if(k==N+1)
	{
		POS+=verif(nrg);
		return;
	}
	int i;
	for(i=1;i<=nrg;++i)
	{
		C[k]=i;
		bec(k+1,nrg);
	}
	C[k]=nrg+1; bec(k+1,nrg+1);
}
int main()
{
	citire();
	bec(1,0);
	g<<POS-1<<'\n';
}