Cod sursa(job #421365)

Utilizator Ionutz_LalaLala Marius Ionut Ionutz_Lala Data 21 martie 2010 13:33:13
Problema Copii Scor 0
Compilator cpp Status done
Runda Algoritmiada 2010, Runda 4, Clasele 5-8 Marime 0.79 kb
#include<cstdio>
FILE *in=fopen("copii.in","r"),*out=fopen("copii.out","w");
int n,i,j,ne,st[12],ech[12][12];
char mat[12][12],aux[12];
void validare(int ec)
{
	if(ec<2) return;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++) ech[i][j]=0;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			if(i!=j&&st[i]!=st[j]&&mat[st[i]][st[j]]=='1') ech[st[i]][st[j]]=1;
	for(i=1;i<=ec;i++)
		for(j=1;j<=ec;j++)
			if(ech[i][j]==0&&i!=j) return;
	ne++;
}
void bktr(int p, int ec)
{
	for(int pval=1;pval<=ec+1;pval++)
	{
		st[p]=pval;
		if(p==n)
			if(pval<=ec) validare(ec);
			else validare(ec+1);
		if(p<n)
			if(pval<=ec) bktr(p+1,ec);
			else bktr(p+1,ec+1);
	}
}
int main()
{
	fscanf(in,"%d",&n);
	for(i=1;i<=n;i++)
		fscanf(in,"%s",mat[i]+1);
	bktr(1,0);
	fprintf(out,"%d\n",ne);
	return 0;
}