Cod sursa(job #421251)
#include <cstdio>
#include <cstring>
#define FOR(i,a,b) for(i=a;i<=b;i++)
#define FORi(i,a,b) for(i=a;i>=b;i--)
using namespace std;
int nr,v[11],a[11][11],n,i,j;
char c;
bool ok1,ok2;
void cit();
void back();
void verif();
int main(){
cit();
v[n]=1;
back();
printf("%d\n",nr);
return 0;
}
void back(){
FORi(i,n,1)
if (v[i]==0){
verif();
if (i==1) return;
v[i]=1;
FOR(j,i+1,n) v[j]=0;
back();
}
}
void verif(){
int k;
ok1=ok2=0;
FOR(j,1,n){
FOR(k,1,n)
if (v[j]==0&&a[j][k]==1&&v[k]==1){
ok1=1;
break;
}
if (ok1) break;
}
FOR(j,1,n){
FOR(k,1,n)
if (v[j]==1&&a[j][k]==1&&v[k]==0){
ok2=1;
break;
}
if (ok2) break;
}
if (ok1&&ok2) ++nr;
}
void cit(){
freopen("copii.in","r",stdin);
freopen("copii.out","w",stdout);
scanf("%d\n",&n);
FOR(i,1,n){
FOR(j,1,n){
scanf("%c",&c);
if (c=='1') a[i][j]=1;
}
scanf("\n");
}
}