Cod sursa(job #481328)

Utilizator zloteanu.adrianzloteanu adrian nichita zloteanu.adrian Data 31 august 2010 12:39:04
Problema Copii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<fstream>
#include<stdio.h>
using namespace std;
int n,sol,st[12];
char s[12][12];
int es(int nrg)
{int i,j,ok[12][12]={0};
for(i=1;i<=n;i++)
  for(j=1;j<=n;j++)
	ok[st[i]][st[j]]|=(s[i][j]=='1');
	for(i=1;i<=nrg;i++)
		for(j=1;j<=nrg;j++)
			if(i!=j&&!ok[i][j])
             return 0;
return 1;}
void back(int k,int nrg)
{if(k==n+1)
  {if(nrg!=1)
    sol+=es(nrg);
   return;}
int i;
for(i=1;i<=nrg;i++)
  {st[k]=i;
  back(k+1,nrg);}
st[k]=nrg+1;
back(k+1,nrg+1);}
int main()
{freopen("copii.in","r",stdin);
ofstream w("copii.out");
scanf("%d\n",&n);
int i;
for(i=1;i<=n;i++)
	gets(s[i]+1);
back(1,0);
w<<sol<<"\n";
return 0;}