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