Pagini recente » Cod sursa (job #2223004) | Cod sursa (job #2323145) | Cod sursa (job #1793026) | Cod sursa (job #2968360) | Cod sursa (job #2481931)
#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 == 1)
{
return;
}
bool matr[15][15];
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
matr[i][j] = 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;
}