Pagini recente » Cod sursa (job #2159961) | Cod sursa (job #2509981) | Cod sursa (job #600167) | Cod sursa (job #506862) | Cod sursa (job #428256)
Cod sursa(job #428256)
#include<stdio.h>
const char in[]="copii.in", out[]="copii.out";
const int N = 1 << 4 ;
char a[N][N];
int v[N], n, sol;
int ver( int nrg )
{
if(nrg < 2 ) return 0;
int b[ N ][ N ] = {0};
for( int i = 1 ; i <= n ; ++i )
for( int j = 1 ; j <= n ; ++j )
if( a[ i ][ j ] == '1' )
b[ v[ i ] ][ v[ j ] ] = 1;
for( int i = 1 ; i <= nrg ; ++i )
for( int j = 1 ; j <= nrg; ++j )
if( i != j && !b[ i ][ j ] )
return 0;
return 1;
}
void back(int k, int nrg)
{
if( k == n + 1 )
{
sol += ver( nrg );
return;
}
for( int i = 1 ; i <= nrg ; ++i )
{
v[ k ] = i;
back( k + 1, nrg );
}
v[ k ] = nrg + 1;
back( k + 1, nrg + 1);
}
int main()
{
freopen(in,"r",stdin);
freopen(out,"w",stdout);
scanf( "%d", &n );
for( int i = 1 ; i <= n ; ++i )
scanf( "%s", a[i] + 1 );
back( 1, 0 );
printf( "%d", sol );
return 0;
}