Cod sursa(job #444681)

Utilizator vlad.doruIon Vlad-Doru vlad.doru Data 21 aprilie 2010 11:17:56
Problema Copii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <cstring>

using namespace std;

ifstream in("copii.in");
ofstream out("copii.out");

int sol[1<<10],n;
char a[20][20];
bool adiacenta[20][20];
int modalitati=0;

void prelucrare(int m){
	int i,j;
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++){
			if(a[i][j]=='1'){
				adiacenta[sol[i]][sol[j]]=1;
			}
		}	
	}
	for(i=1;i<=m;i++){
		for(j=1;j<=m;j++){
			if(adiacenta[i][j]!=1 && i!=j){
				return;
			}
		}
	}
	modalitati++;
}

void bkt(int p,int m){
	int aux = m;
	if(p==n+1){
		prelucrare(m);
		return;
	}
	for(int i=1;i<=1+aux;i++){
		sol[p]=i;
		m=max(m,i);
		bkt(p+1,m);
	}
}

int main(){
	in>>n>>ws;
	int i,j;
	for(i=1;i<=n;i++){
		in.getline(1+a[i],20);
	}
	bkt(1,0);
	out<<modalitati-1;
	return 0;
}