Pagini recente » Cod sursa (job #2010909) | Istoria paginii runda/1234567890 | Profil emiliatiza | Rating Ungureanu Adrian (Delete) | Cod sursa (job #1516871)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
const int Nmax = 12;
char A[Nmax][Nmax];
int N, NOG, group[Nmax], D[Nmax][Nmax], solutions;
void read()
{
ifstream f("copii.in");
f >> N;
for ( int i = 1; i <= N; ++i )
f >> ( A[i] + 1 );
f.close();
}
void validate()
{
memset ( D, 0, sizeof ( D ) );
for ( int i = 1; i <= N; ++i )
for ( int j = 1; j <= N; ++j )
if ( A[i][j] == '1' )
D[ group[i] ][ group[j] ] = 1;
for ( int i = 1; i <= NOG; ++i )
for ( int j = 1; j <= NOG; ++j )
if ( i != j )
if ( D[i][j] == 0 )
return;
solutions++;
}
void back( int k )
{
if ( k > N )
if ( NOG >= 2 )
validate();
else;
else
{
for ( int i = 1; i <= NOG; ++i )
{
group[k] = i;
back( k + 1 );
}
NOG++;
group[k] = NOG;
back( k + 1 );
NOG--;
}
}
void print()
{
ofstream g("copii.out");
g << solutions << "\n";
g.close();
}
int main()
{
read();
back( 1 );
print();
return 0;
}