Pagini recente » Cod sursa (job #50458) | Cod sursa (job #708410) | Cod sursa (job #2688762) | Cod sursa (job #61078) | Cod sursa (job #2636959)
#include <bits/stdc++.h>
#define DIM 15
using namespace std;
bool v[DIM][DIM];
pair <short,short> x[DIM];
char s[DIM][DIM];
int n,i,j,sol;
void back (short pas){
if (pas == n+1){
short k = x[n].second;
if (k == 1)
return;
for (short i=1;i<=k;++i)
for (short j=1;j<=k;++j)
v[i][j] = 0;
for (short i=1;i<=n;i++)
for (short j=1;j<=n;j++)
if (s[i][j] == '1')
v[x[i].first][x[j].first] = 1;
bool ok = 1;
for (short i=1;i<=k;++i)
for (short j=1;j<=k;++j)
if (i != j && !v[i][j]){
ok = 0;
break;
}
sol += ok;
return;
}
for (short i=1;i<=n;++i){
x[pas].first = i;
if (x[pas].first <= x[pas-1].second+1){
x[pas].second = max (x[pas-1].second,i);
back(pas+1);
x[pas].second = x[pas-1].second;
}}}
int main (){
ifstream fin ("copii.in");
ofstream fout ("copii.out");
fin>>n;
for (i=1;i<=n;++i)
fin>>s[i]+1;
back(1);
fout<<sol;
return 0;
}