Cod sursa(job #421476)

Utilizator deneoAdrian Craciun deneo Data 21 martie 2010 14:12:20
Problema Copii Scor 0
Compilator cpp Status done
Runda Algoritmiada 2010, Runda 4, Clasele 5-8 Marime 0.81 kb
#include<fstream.h>
int v[11], m[11][11], n;
long sol;

int testeaza(){
	int t[11][11], max=0, i, k;
	for(i=1; i<=n; i++)
		for(k=1; k<=n; k++)
			t[i][k]=0;
	for(i=1; i<=n; i++)
		if(v[i]>max)
			max=v[i];
	for(i=1; i<=n; i++)
		for(k=1; k<=n; k++)
			if(m[i][k])
				t[v[i]][v[k]]=1;
	if(max<2)
		return 0;
	for(i=1; i<=max; i++)
		for(k=1; k<=max; k++)
			if(!t[i][k] && k!=i)
				return 0;
	return 1;
}

void back(int i)
{
	int j;
	if(i>n)
		if(testeaza())
			sol++;
		else;
	else
		for(j=1; j<=n; j++)
		{
				v[i]=j;
				back(i+1);
		}
}

int main(){
	int i, j;
	char c;
	ifstream f("copii.in");
	f>>n;
	f.get();
	for(i=1; i<=n; i++)
		for(j=1; j<=n; j++)
		{
			f>>c;
			m[i][j]=(int)(c-'0');
		}
	back(1);
	ofstream g("copii.out");
	g<<sol/2;
	g.close();
	return 0;
}