Cod sursa(job #421251)

Utilizator andreirulzzzUPB-Hulea-Ionescu-Roman andreirulzzz Data 21 martie 2010 12:43:41
Problema Copii Scor 0
Compilator cpp Status done
Runda Algoritmiada 2010, Runda 4, Clasele 9-10 Marime 0.95 kb
#include <cstdio>
#include <cstring>
#define FOR(i,a,b) for(i=a;i<=b;i++)
#define FORi(i,a,b) for(i=a;i>=b;i--)
using namespace std;

int nr,v[11],a[11][11],n,i,j;
char c;
bool ok1,ok2;

void cit();
void back();
void verif();

int main(){
	cit();
	v[n]=1;
	back();
	printf("%d\n",nr);
	return 0;
}

void back(){
	FORi(i,n,1)
		if (v[i]==0){
			verif();
			if (i==1) return;
			v[i]=1;
			FOR(j,i+1,n) v[j]=0;
			back();
		}
}

void verif(){
	int k;
	ok1=ok2=0;
	FOR(j,1,n){
		FOR(k,1,n)
			if (v[j]==0&&a[j][k]==1&&v[k]==1){
				ok1=1; 
				break;
			}
		if (ok1) break;
		}
	FOR(j,1,n){
		FOR(k,1,n)
			if (v[j]==1&&a[j][k]==1&&v[k]==0){
				ok2=1; 
				break;
			}
		if (ok2) break;
		}
	if (ok1&&ok2) ++nr;
}

void cit(){
	freopen("copii.in","r",stdin);
	freopen("copii.out","w",stdout);
	scanf("%d\n",&n);
	FOR(i,1,n){
		FOR(j,1,n){
			scanf("%c",&c);
			if (c=='1') a[i][j]=1;
			}
		scanf("\n");
		}
}