Pagini recente » Cod sursa (job #1686794) | Cod sursa (job #2354450) | Cod sursa (job #2822745) | Cod sursa (job #1542963) | Cod sursa (job #421609)
Cod sursa(job #421609)
#include <stdio.h>
#include <string.h>
long i, j, k, n, p, ok, v[15], vb1, sol, a[15][15], r[15][15];
char ch;
void back(long lev, long max) {
if (lev == n + 1) {
++p;
memset(r, 0, sizeof(r));
/*for (j = 1; j <= n; ++j) {
printf("%ld ", v[j]);
}*/
if (p > 1) {
for (j = 1; j <= n; ++j) {
for (k = 1; k <= n; ++k) {
if (a[j][k] == 1) {
r[v[j]][v[k]] = 1;
}
}
}
vb1 = 0;
for (j = 1; j <= max; ++j) {
for (k = 1; k <= max; ++k) {
if (j != k) {
if (r[j][k] != 1) vb1 = 1;
}
}
}
if (vb1 == 0) {
++sol;
}
}
//printf("\n");
return;
}
for (long i = 1; i <= max + 1; ++i) {
v[lev] = i;
//if (max < v[lev]) max = v[lev];
back(lev + 1, i);
}
}
int main() {
freopen("copii.in", "r", stdin);
freopen("copii.out", "w", stdout);
scanf("%ld\n", &n);
for (i = 1; i <= n; ++i) {
for (j = 1; j <= n; ++j) {
scanf("%c", &ch);
a[i][j] = (long)(ch - '0');
}
scanf("%c", &ch);
}
back(1, 0);
printf("%ld\n", sol);
return 0;
}