Pagini recente » Cod sursa (job #2564141) | Cod sursa (job #2962050) | Cod sursa (job #2272506) | Cod sursa (job #3165883) | Cod sursa (job #2475818)
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("copii.in");
ofstream out("copii.out");
#define N 11
int v[N], pos = 0;
char s[N][N];
void solve(int nr_grupe, int n) {
if (nr_grupe < 1) {
return ;
}
bool a[nr_grupe + 1][nr_grupe + 1];
for (int i = 0; i < n; i ++) {
int grupa1 = v[i + 1];
for (int j = 0; j < strlen(s[i]); j ++) {
if (s[i][j] == 1) {
int grupa2 = v[j + 1];
a[grupa1][grupa2] = true;
}
}
}
for (int i = 0; i < nr_grupe; i ++) {
for (int j = 0; j < nr_grupe; j ++) {
if (i != j && (!a[i][j] || !a[j][i])) {
return ;
}
}
}
pos ++;
}
void bkt(int p, int et_max, int n) {
if (p == n + 1) {
solve(et_max, n);
return ;
}
for (int i = 0; i <= et_max; i ++) {
v[p] = i;
bkt(p + 1, et_max, n);
}
v[p] = et_max + 1;
bkt(p + 1, et_max + 1, n);
}
int main() {
int n;
in >> n;
for (int i = 0; i < n; i ++) {
in >> s[i];
}
v[1] = 0;
bkt(2, 0, n);
out << pos;
return 0;
}