Pagini recente » Cod sursa (job #627903) | Borderou de evaluare (job #2103295) | Borderou de evaluare (job #2034657) | Cod sursa (job #1967139) | Cod sursa (job #551562)
Cod sursa(job #551562)
#include<stdio.h>
#include<string.h>
FILE*f=fopen("copii.in","r");
FILE*g=fopen("copii.out","w");
int nre,i,N,j,ii,X[15],M[15][15],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 <= N ; ++i ){
for ( j = 1 ; j <= N ; ++j ){
if ( A[i][j] == '0' ) continue;
M[ X[i] ][ X[j] ] = 1;
}
}
for ( i = 1 ; i <= nre ; ++i ){
for ( j = 1 ; j <= nre ; ++j )
if ( i != j && !M[ i ][ j ] )
return ;
}
++Rez;
return ;
}
for ( int i = 1 ; i <= nre ; ++i ){
X[niv] = i;
bck ( niv + 1 );
}
++nre;
X[niv] = nre;
bck( niv + 1 );
--nre;
}
int main () {
fscanf(f,"%d\n",&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;
}