Pagini recente » Cod sursa (job #1284392) | Cod sursa (job #274093) | Cod sursa (job #3261189) | Cod sursa (job #99085) | Cod sursa (job #1520167)
#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;
}