Pagini recente » Cod sursa (job #1795832) | Cod sursa (job #2672713) | Cod sursa (job #2165097) | Cod sursa (job #850810) | Cod sursa (job #2481835)
#include <fstream>
#include <cmath>
using namespace std;
int x[20], viz[20], n, cnt, m[20][20], ck[20][20];
ifstream in ("copii.in");
ofstream out ("copii.out");
void check(int k) {
for(int i = 1;i <= k; i++)
for(int j = 1; j <= k; j++)
ck[i][j] = 0;
for(int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++)
if (m[i][j])
ck[x[i]][x[j]] = true;
}
for (int i = 1; i <= k; i++)
for (int j = 1; j <= k; j++)
if (i != j && !ck[i][j])
return;
cnt ++;
}
void bkt(int p, int k) {
if(p == n + 1) {
check(k);
return;
}
for(int i = 1; i <= k + 1; i ++){
x[p] = i;
bkt(p + 1, max(k, i));
}
}
int main () {
in >> n;
for(int i = 1; i <= n; i ++) {
char c;
for(int j = 1; j <= n; j ++) {
in >> c;
m[i][j] = c - '0';
}
}
bkt(1, 0);
out << cnt - 1;
return 0;
}