Cod sursa(job #422236)

Utilizator Anamaria20Cotirlea Anamaria Anamaria20 Data 22 martie 2010 13:16:23
Problema Copii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>

FILE *f,*s;

struct prieten
{
	char x[50];
};

prieten v1[50],v3[50];

int n,i,j,rez,v2[50];

int Verifica()
{
	int ok=0;
	int max=0;
	
	for(int i=2;i<=n;i++)
	{	
		if(v2[i]!=v2[i-1])
			ok=1;
		
		if(v2[i]>max)
			max=v2[i];
	}		
	
	if(ok==0)
		return 0;
	
	for(int i=1;i<=n;i++)
		for(int j=0;j<=10;j++)
			v3[i].x[j]=' ';
	
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<=n-1;j++)
		{
			if(v1[i].x[j]=='1')
				v3[v2[i]].x[v2[j+1]]='1';
		}	
	}	
	
	for(int i=1;i<=max;i++)
	{
		for(int j=1;j<=max;j++)
		{
			if(v3[i].x[j]!='1'&&i!=j)
				ok=0;
		}	
	}	
	
	if(ok==1)
		return 1;
	else
		return 0;
}	

void Echipe(int k)
{
	if(k==n+1)
		rez+=Verifica();
	else
	{
		for(int i=1;i<=n;i++)
		{
			v2[k]=i;
			
			Echipe(k+1);
		}	
	}	
}	

int main()
{
	f=fopen("copii.in","r");
	s=fopen("copii.out","w");
	
	fscanf(f,"%d\n",&n);
	
	for(i=1;i<=n;i++)
		fscanf(f,"%s\n",&v1[i].x); 

	Echipe(1);
	
	fprintf(s,"%d",rez/n);
	
	fclose(s);
}