Pagini recente » Cod sursa (job #2280139) | Cod sursa (job #1877097) | Cod sursa (job #1535360) | Cod sursa (job #865489) | Cod sursa (job #551401)
Cod sursa(job #551401)
#include<stdio.h>
#include<string>
FILE*f=fopen("copii.in","r");
FILE*g=fopen("copii.out","w");
int E[15][15],nre,i,N,j,ii,X[15],M[15][15],ok,Rez;
char A[15][15];
void bck ( int niv ){
if ( niv == N + 1 ){
if ( nre <= 1 ) return ;
memset(M,0,sizeof(M));
for ( i = 1 ; i <= nre ; ++i ){
for ( j = 1 ; j <= E[i][0] ; ++j ){
for ( ii = 1 ; ii <= N ; ++ii ){
if ( A[ E[i][j] ][ ii ] == '1' )
M[ i ] [X [ii] ] = 1;
}
}
}
ok = 0;
for ( i = 1 ; i <= nre ; ++i ){
for ( j = 1 ; j <= nre ; ++j )
if ( i != j && M[i][j] == 0 )
ok = 1;
}
if ( !ok )
++Rez;
return ;
}
for ( int i = 1 ; i <= nre ; ++i ){
E[i][++E[i][0]] = niv;
X[niv] = i;
bck ( niv + 1 );
--E[i][0];
}
++nre;
E[nre][++E[nre][0]] = niv;
X[niv] = nre;
bck( niv + 1 );
--nre;
}
int main () {
fscanf(f,"%d",&N);
for ( i = 1 ; i <= N ; ++i ){
fscanf(f,"%s",A[i]+1);
}
bck(1);
fprintf(g,"%d\n",Rez);
fclose(f);
fclose(g);
return 0;
}