Pagini recente » Cod sursa (job #2334673) | Cod sursa (job #76484) | Cod sursa (job #691924) | Cod sursa (job #2389460) | Cod sursa (job #2475945)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
vector< vector<bool> > m ( 15, vector<bool> (15));
vector<int> sol ( 15, 0 );
bool v[16][16];
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++ )
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;
for ( j = 0; j < n; j++ ){
in >> ch;
v[i][j] = ch - '0';
}
}
in.close();
bkt ( 0 , 0 );
ofstream out ( "copii.out" );
out << grupuri;
out.close();
return 0;
}