Pagini recente » Cod sursa (job #1312371) | Cod sursa (job #1407958) | Cod sursa (job #1457220) | Cod sursa (job #916591) | Cod sursa (job #2475885)
#include <bits/stdc++.h>
using namespace std;
ifstream in("copii.in");
ofstream out("copii.out");
int n, nr, col[15], mat[15][15];
char c[15][15];
void back(int lvl, int mx) {
if (lvl == n + 1) {
for (int i = 1; i <= mx; i++)
for (int j = 1; j <= mx; j++)
mat[i][j] = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
mat[col[i]][col[j]] |= (c[i][j] == '1');
bool flag = 1;
for (int i = 1; i <= mx; i++)
for (int j = 1; j <= mx; j++)
if (i != j && !mat[i][j])
flag = 0;
if (flag && mx - 1)
nr++;
return;
}
for (int i = 1; i <= mx + 1; i++) {
col[lvl] = i;
back(lvl + 1, max(mx, i));
}
}
int main() {
in >> n;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
in >> c[i][j];
back(1, 0);
out << nr;
return 0;
}