Pagini recente » Cod sursa (job #2353767) | Cod sursa (job #470972) | Cod sursa (job #956241) | Cod sursa (job #1158995) | Cod sursa (job #2475893)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
vector<int> sol ( 15, 0 );
vector<int> v;
int n, grupuri;
void verif ( ){
vector< vector<bool> > m ( n + 1, vector<bool> (n + 1));
int i, j;
for ( i= 0 ;i < n ; i++ )
for ( j = 0; j < n; j++ )
m[sol[i]][sol[j]] = ( i == ( i & (1 << j)) ? 1 : 0 );
for ( i= 0 ;i < n/2 ; i++ )
for ( j = 0; j < n/2 ; j++ )
if ( m[i][j] != m[j][i]){
return;
}
grupuri++;
}
void bkt( int k ){
if ( k == n ){
verif();
return;
}
sol[k]++;
bkt( k + 1 );
sol[k]--;
}
int main(){
int i, j, nr, x;
char ch;
ifstream in ("copii.in");
in >> n;
for ( i = 0; i < n; i++ ){
x = 0, nr = 0;
for ( j = 0; j < n; j++ ){
in >> ch;
if ( ch == '1' )
x = (x | ( 1 << nr));
nr++;
}
v.push_back( x );
}
in.close();
for ( i = 0; i < n; i++ )
bkt(i);
ofstream out ( "copii.out" );
out << grupuri;
out.close();
return 0;
}