Cod sursa(job #734382)

Utilizator robertpoeRobert Poenaru robertpoe Data 14 aprilie 2012 07:59:20
Problema Copii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<fstream>
#define nmax 12
#define dll long long 
using namespace std;
ifstream f("copii.in");
ofstream g("copii.out");
char P[nmax][nmax];
int C[nmax],N;
dll rez=-1;
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 back(int k,int nrg)
{
	if(k==N+1)
	{
		rez+=verif(nrg);
		return;
	}
	int i;
	for(i=1;i<=nrg;++i)
	{
		C[k]=i;
		back(k+1,nrg);
	}
	C[k]=nrg+1;
	back(k+1,nrg+1);
}
int main()
{
	citire();
	back(1,0);
	g<<rez-1<<'\n';
}