Pagini recente » Cod sursa (job #443746) | Cod sursa (job #1567869) | Cod sursa (job #786474) | Cod sursa (job #265079) | Cod sursa (job #1357718)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("copii.in");
ofstream fout("copii.out");
int n, sol;
int v[15];
char s[15];
bool a[15][15], f[15];
bool verif(int x) {
if (x == 1)
return 0;
for (int i = 1; i <= x; i++) {
for (int j = 1; j <= 10; j++)
f[j] = 0;
f[i] = 1;
for (int j = 1; j <= n; j++) {
if (v[j] != i)
continue;
for (int k = 1; k <= n; k++)
if (a[j][k])
f[v[k]] = 1;
}
for (int j = 1; j <= x; j++)
if (!f[j])
return 0;
}
return 1;
}
void back(int k, int x) {
if (k == n + 1) {
if (verif(x))
sol++;
return;
}
for (int i = 1; i <= x + 1; i++) {
v[k] = i;
back(k + 1, max(x, i));
}
}
int main() {
fin >> n;
for (int i = 1; i <= n; i++) {
fin >> (s + 1);
for (int j = 1; j <= n; j++)
a[i][j] = s[j] - '0';
}
back(1, 0);
fout << sol << "\n";
return 0;
}