Pagini recente » Cod sursa (job #2029085) | Cod sursa (job #1663891) | Cod sursa (job #128880) | Cod sursa (job #596044) | Cod sursa (job #2561468)
#include <bits/stdc++.h>
using namespace std;
char v[12][12];
int n, g[12], ans;
void check(){
vector<vector<int> > T(g[n] + 2);
do{
int in = 1;
for(int i = 1; i <= n && in; ++i)
T[g[i]].push_back(i);
for(int i = 1; i <= n; ++i){
int ok = 0;
for(int j = i + 1; j <= n; ++j){
for(auto &a: T[i]){
for(auto &b: T[j]){
if(v[a][b]){
ok = 1;
break;
}
}
}
if(!ok){
in = 0;
break;
}
}
}
if(in)
++ans;
}while(next_permutation(g + 1, g + n + 1));
}
void rec(int i, int k){
g[i] = k;
if(i == n){
check();
return;
}
rec(i + 1, k);
rec(i + 1, k + 1);
}
int main(){
ifstream cin("copii.in");
ofstream cout("copii.out");
cin >> n;
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= n; ++j)
cin >> v[i][j];
rec(1, 1);
cout << ans / 2;
}