Pagini recente » Cod sursa (job #2198904) | Cod sursa (job #3168847) | Cod sursa (job #2907410) | Rating Boyte Roxana (BoyteRoxana) | Cod sursa (job #1511493)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("copii.in");
ofstream out("copii.out");
int n,sol[12], nr;
char a[12][12];
bool pri[12][12];
void verifica( int subm )
{
if ( subm < 2 )
return;
for ( int i = 1; i <= subm; i++ )
for ( int j = 1; j <= subm; j++ )
pri[i][j] = false;
for ( int i = 1; i <= n; i++ )
for ( int j = 1; j <= n; j++ )
if ( a[i][j] == '1' )
pri[ sol[i] ][ sol[j] ] = true;
for ( int i = 1; i <= subm; i++ )
for ( int j = 1; j <= subm; j++ )
if ( i != j && pri[i][j] == false )
return;
nr++;
}
void bkt( int p, int subm )
{
if ( p == n+1 )
verifica(subm);
else
{
for ( int i = 1; i <= subm; i++ )
{
sol[p] = i;
bkt(p+1, subm );
}
sol[p] = subm+1;
bkt(p+1,subm+1);
}
}
int main()
{
in >> n;
for ( int i = 1; i <= n; i++ )
in >> a[i]+1;
bkt(1, 0);
out << nr;
return 0;
}