Cod sursa(job #1520167)

Utilizator nimicLeoveanu Mihaita Alexandru nimic Data 8 noiembrie 2015 13:44:53
Problema Copii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
using namespace std;
ifstream in("copii.in");
ofstream out("copii.out");

const int nmax = 16;
char mat[nmax][nmax];
int n, actgr, grupa[nmax], rasp;
bool d[nmax][nmax];
 
void validate()
{
	for(int i = 1; i<=n; i++)
		for(int j = 1; j<=n; j++)
			d[i][j] = 0;
 
    for(int i = 1; i<=n; i++)
		for(int j = 1; j<=n; j++)
			if(mat[i][j]=='1')
				d[grupa[i]][grupa[j]] = 1;
 
    for(int i = 1; i<=actgr; i++)
		for(int j = 1; j<=actgr; j++)
			if (i!=j)
				if(d[i][j]==0)
					return;
 
    rasp++;
}
 
void back(int k)
{
    if(k>n)
	{
		if(actgr>=2)
			validate();
	}
    else
    {
        for(int i = 1; i<=actgr; i++)
        {
            grupa[k] = i;
            back(k + 1);
        }
 
        actgr++;
        grupa[k] = actgr;
        back(k + 1);
        actgr--;
    }
}
 
int main()
{
	int player_unu=0;
 
    in>>n;
 
    for(int i = 1; i<=n; i++)
		in>>mat[i] + 1;
 
    back(1);
    
	out<<rasp<<'\n';
 
    return player_unu;
}