Pagini recente » Cod sursa (job #1309756) | Cod sursa (job #676410) | Cod sursa (job #3237596) | Cod sursa (job #1041655) | Cod sursa (job #2831127)
#include <bits/stdc++.h>
#define DIM 15
using namespace std;
bool v[DIM][DIM];
pair<short, short> x[DIM];
char s[DIM][DIM];
int n, i, j, sol;
void back(short pas) {
if (pas == n + 1) {
short k = x[n].second;
if (k == 1)
return;
for (short i = 1; i <= k; ++i)
for (short j = 1; j <= k; ++j)
v[i][j] = 0;
for (short i = 1; i <= n; i++)
for (short j = 1; j <= n; j++)
if (s[i][j] == '1')
v[x[i].first][x[j].first] = 1;
bool ok = 1;
for (short i = 1; i <= k; ++i)
for (short j = 1; j <= k; ++j)
if (i != j && !v[i][j]) {
ok = 0;
break;
}
sol += ok;
return;
}
for (short i = 1; i <= n; ++i) {
x[pas].first = i;
if (x[pas].first <= x[pas - 1].second + 1) {
x[pas].second = max(x[pas - 1].second, i);
back(pas + 1);
x[pas].second = x[pas - 1].second;
}
}
}
int main() {
ifstream fin("copii.in");
ofstream fout("copii.out");
fin >> n;
for (i = 1; i <= n; ++i)
fin >> s[i] + 1;
back(1);
fout << sol;
return 0;
}