Pagini recente » Cod sursa (job #2255054) | Cod sursa (job #2974081) | Cod sursa (job #648681) | Cod sursa (job #2508859) | Cod sursa (job #1357661)
#include<cstdio>
#include<cstring>
int n,i,j,nr,s,v[20][20],y[20][20],x[20];
char ss[20];
FILE *f,*g;
int verif(){
memset(y,0,sizeof(y));
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if( v[ x[i] ][ x[j] ]==1 && x[i] != x[j] ){
y[ x[i] ][ x[j] ]=1;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if( y[ x[i] ][ x[j] ] == 0 && x[i]!=x[j] )
return 0;
}
}
return 1;
}
void back(int k){
if(k==n+1){
s+=verif();
return;
}
for(int i=1;i<=nr;i++){
x[k]=i;
back(k+1);
}
x[k]=nr+1;
nr++;
back(k+1);
nr--;
}
int main(){
f=fopen("copii.in","r");
g=fopen("copii.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++){
fscanf(f,"%s",ss);
for(j=0;j<n;j++){
v[i][j+1]=ss[j]-'0';
}
}
back(1);
fprintf(g,"%d",s-1);
fclose(f);
fclose(g);
return 0;
}