Pagini recente » Cod sursa (job #1348031) | Cod sursa (job #867444) | Cod sursa (job #357551) | Cod sursa (job #240051) | Cod sursa (job #1930476)
#include <cstdio>
int n, rez;
int c[10][10], sol[100][10], nr[100];
void verif( int m )
{
int i, j, k, l, ok, flg=0;
if( m>1 )
{
for( i=1;i<=m;i++ )
for( j=1;j<=m;j++ )
if( j!=i )
{
ok=0;
for( k=1;k<=nr[i];k++ )
for( l=1;l<=nr[j];l++ )
ok+=c[sol[i][k]][sol[j][l]];
if( ok==0 )
flg=1;
}
if( flg==0 )
rez++;
}
}
void bkt( int p, int m )
{
int i;
if( p==n+1 )
verif(m);
else
{
for( i=1;i<=m;i++ )
{
nr[i]++;
sol[i][nr[i]]=p;
bkt(p+1,m);
nr[i]--;
}
nr[m+1]++;
sol[m+1][nr[m+1]]=p;
bkt(p+1,m+1);
nr[m+1]--;
}
}
int main()
{
freopen( "copii.in", "r", stdin );
freopen( "copii.out", "w", stdout );
int i,j;
scanf( "%d", &n );
for( i=1;i<=n;i++ )
{
scanf( "\n" );
for( j=1;j<=n;j++ )
{
scanf( "%c", &c[i][j] );
c[i][j]-='0';
}
}
bkt(1,0);
printf( "%d", rez );
return 0;
}