Cod sursa(job #1356923)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 23 februarie 2015 17:34:15
Problema Copii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstring>
#include <fstream>
#define DIM 12

using namespace std;

ifstream fin("copii.in");
ofstream fout("copii.out");
int N,sol[DIM],nr,answer;
char A[DIM][DIM];
int test(){
    for(int i=1;i<=N;i++){
        int ok=0;
        for(int j=1;j<=N;j++)
            if(sol[i]!=sol[j] && A[j][i]=='1'){
                ok=1;
                break;
            }
        if(!ok)
            return 0;
    }
    return 1;
}
void back(int k){
    if(k==N+1){
        answer+=test();
        return;
    }
    for(int i=1;i<=nr;i++){
        sol[k]=i;
        back(k+1);
    }
    sol[k]=++nr;
    back(k+1);
    nr--;
}
int main(){
    fin>>N;
    for(int i=1;i<=N;i++)
        fin>>A[i]+1;
    back(1);
    fout<<answer;
    return 0;
}