Pagini recente » Cod sursa (job #3244735) | Cod sursa (job #3157622) | Cod sursa (job #2636982) | Cod sursa (job #1807820) | Cod sursa (job #2475800)
#include <iostream>
#include <fstream>
using namespace std;
#define N 16
int a[N][N],b[N][N],ans,n,g[N];
char c;
bool check (int nr){
if (nr == 1)
return 0;
int i,j;
for (i = 0; i < nr; ++i)
for (j = 0; j < nr; ++j)
b[i][j] = 0;
for (i = 0; i < n; ++i)
for (j = 0; j < n; ++j)
if (a[i][j])
b[g[i] - 1][g[j] - 1] = 1;
for (i = 0; i < nr; ++i)
for (j = 0; j < nr; ++j)
if (i != j && !b[i][j])
return 0;
return 1;
}
void bkt (int k,int nr){
if (k == n){
if (check (nr))
++ans;
return;
}
for (int i = 0; i < nr; ++i){
g[k] = i + 1;
bkt (k + 1, nr);
g[k] = 0;
}
g[k] = nr + 1;
bkt (k + 1, nr + 1);
g[k] = 0;
}
int main()
{
ifstream fin ("copii.in");
ofstream fout ("copii.out");
fin >> n;
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j){
fin >> c;
a[i][j] = (int)(c - '0');
}
bkt (0,0);
fout << ans;
return 0;
}