Cod sursa(job #799921)

Utilizator D4n13LMuntean Dan Iulian D4n13L Data 20 octombrie 2012 13:32:26
Problema Copii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<fstream>
using namespace std;
ifstream in("copii.in");
ofstream out("copii.out");
int n,sol[14],mat[15][15],nrpos;
//bool prietenie[15][15];
void bkt(int,int);
void vrf_prietenie(int);
int main()
{
	int i,j;
	in>>n;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			in>>mat[i][j];
	sol[1]=1;
	bkt(2,1);
	out<<nrpos;
	return 0;
}
void bkt(int p,int max)
{
	if(p-1==n && max>=2)
	{
		vrf_prietenie(max);
		return;
	}
	if(p-1==n &&max<2)
		return;
	for(int i=1;i<=max;i++)
	{
		sol[p]=i;
		bkt(p+1,max);
	}
	sol[p]=max+1;
	bkt(p+1,max+1);
}
void vrf_prietenie(int max)
{
	int i,j,k=0,l;
	bool prietenie[15][15]={0};
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
		{
			if(mat[i][j]==1)
			{
				prietenie[sol[i]][sol[j]]=1;
			}
		}
	}
	for(i=1;i<=max;i++)
		for(j=1;j<=max;j++)
		{
			if(i==j)
				prietenie[i][j]=1;
			if(prietenie[i][j]==0)
				k=1;
		}
	if(k==0)
		nrpos++;
}