Pagini recente » Cod sursa (job #1579891) | Cod sursa (job #1183521) | Cod sursa (job #2663071) | Cod sursa (job #646961) | Cod sursa (job #2481921)
#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[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;
}