Cod sursa(job #491448)

Utilizator costin22Muraru Costin costin22 Data 11 octombrie 2010 12:54:19
Problema Copii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h> 
#define NMAX 12 
char A[NMAX][NMAX],marc[NMAX][NMAX]; 
int n,sols,part[NMAX]; 
void read() 
{ 
    scanf("%d\n",&n); 
   
	int i;     

	for (i=1; i<=n; i++) 
     
		fgets(A[i]+1,NMAX,stdin); 
} 
inline int verif(int p) 
{ 
    int i,j; 
	for (i=1; i<=p; i++)        
	for (j=1; j<=p; j++) 
	marc[i][j]=0; 
	for (i=1; i<=n; i++)         
	for (j=1; j<=n; j++)		
	if (A[i][j]=='1')                
	marc[part[i]][part[j]]=1;   
	for (i=1; i<=p; i++) 
	for (j=1; j<=p; j++)             
	if (i!=j && !marc[i][j])                
	return 0;    
	return 1; 
	} 
	void bkt(int k,int p) 
	{ 
   
	if (k==n+1) 
	
{        
if (verif(p))             
sols++; 

return ;     
}     
int i;     
for (i=1; i<=p; i++) 
    
{ 

part[k]=i;         
bkt(k+1,p); 
   
} 

part[k]=p+1;     
bkt(k+1,p+1); 
} 
int main() 
{ 
freopen("copii.in","r",stdin);     
freopen("copii.out","w",stdout);     
read(); 
    bkt(1,0); 
    printf("%d\n",sols-1); 
    return 0; 
}