Pagini recente » Cod sursa (job #1528855) | Cod sursa (job #2799961) | Cod sursa (job #764952) | Cod sursa (job #3195080) | Cod sursa (job #2481912)
#include<fstream>
using namespace std;
ifstream fin("copii.in");
ofstream fout("copii.out");
int perm[20];
int a[20][20];
char sir[20][20];
int sol = 0;
int nrSubgrupe;
void check(int n)
{
if(nrSubgrupe < 2)
{
return;
}
bool matr[20][20] = {0};
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
if(a[i][j])
{
matr[perm[i]][perm[j]] = 1;
}
}
}
for(int i = 1; i <= nrSubgrupe; i++)
{
for(int j = 1; j <= nrSubgrupe; j++)
{
if(i!=j && !matr[i][j])
{
return;
}
}
}
sol++;
}
void part(int poz, int n)
{
if(n+1 == poz)
{
check(n);
return;
}
for(int i = 1; i <= nrSubgrupe; i++)
{
perm[poz] = i;
part(poz+1,n);
}
nrSubgrupe++;
perm[poz]=nrSubgrupe;
part(poz+1, n);
nrSubgrupe--;
}
int main()
{
int n;
fin >> n;
for(int i = 1; i <= n; i++)
{
fin >> (sir[i] +1);
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
a[i][j] = sir[i][j] - '0';
}
}
part(1,n);
fout << sol;
fin.close();
fout.close();
return 0;
}