Pagini recente » Cod sursa (job #1853067) | Cod sursa (job #2497013) | Cod sursa (job #179882) | Cod sursa (job #2238729) | Cod sursa (job #1930462)
# include <cstdio>
# include <vector>
using namespace std;
typedef vector<int> mult;
vector<mult> t;
int n, rez, v[10];
bool f[10][10];
bool check( void )
{
int i, l, j, k;
if ( t.size() == 1 )
return 0;
for( i=0;i<t.size();i++ )
{
k=(1<<i);
for( j=0;j:t[i];j++ )
{
for( l=0;l<n;l++ )
if( f[j][l] )
k|=(1<<v[l]);
}
if( k!=(1<<t.size())-1 )
return 0;
}
return 1;
}
void bkt( int p=0 )
{
if( p==n )
rez+=check();
else
{
int i;
for( i=0;i<t.size();i++ )
{
v[p]=i;
t[i].push_back(p);
bkt(p+1);
t[i].pop_back();
}
v[p] = t.size();
t.push_back(vector<int>(1,p));
bkt(p+1);
t.pop_back();
}
}
int main()
{
freopen( "copii.in", "r", stdin );
freopen( "copii.out", "w", stdout );
int i, j;
char c;
scanf( "%d", &n );
for( i=0;i<n;i++ )
for( j=0;j<n;j++ )
{
scanf( "%c", &c );
f[i][j]=c -'0';
}
bkt();
printf( "%d", rez );
return 0;
}