Cod sursa(job #447264)

Utilizator adrian_manducadrian manduc adrian_manduc Data 28 aprilie 2010 10:44:05
Problema Copii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<fstream>
using namespace std;
ifstream f("copii.in");
ofstream g("copii.out");
int n,ns=0,sol[25];
char a[25][25];
void verif(int m);
void bkt(int p, int max)
{
	if(p==n+1)
	{
		verif(max);
		return;
	}
	for(int i=1;i<=max;++i)
	{
		sol[p]=i;
		bkt(p+1,max);
	}
	sol[p]=1+max;
	bkt(p+1,1+max);
}
void verif(int m)
{
	int i,j;
	bool b[25][25]={false};
	for(i=1;i<=n;++i)
		for(j=1;j<=n;++j)
			if(a[i][j]=='1')
				b[sol[i]][sol[j]]=true;
	for(i=1;i<=m;++i)
		for(j=1;j<=m;++j)
			if(i!=j && !b[i][j])
				return;
	++ns;
}
int main()
{
	int i;
	f>>n>>ws;
	for(i=1;i<=n;++i)
		f.getline(1+a[i],25);
	bkt(1,0);
	g<<ns-1;
	return 0;
}