Cod sursa(job #2878101)

Utilizator Vasile_AndreiVasile Andrei Calin Vasile_Andrei Data 25 martie 2022 19:59:37
Problema Copii Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

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

short N,st[15];
bool a[12][12];
char p[12][12];
unsigned short nr;

void verif(short M){
    if(M==1) return;
    short i,j;

    memset(a,0,sizeof(a));
    for(i=1;i<=N;++i){
        for(j=1;j<=N;++j)
            if(p[i][j]=='1') a[st[i]][st[j]]=1;
    }

    for(i=1;i<=M;++i)
        for(j=1;j<=M;++j)
            if(i!=j && a[i][j]==0) return;

    ++nr;
}

void backtracking(short k, short M){
    if(k==N+1) verif(M);
    else{
        for(short i=1;i<=M+1;++i){
            st[k]=i;

            if(i<=M) backtracking(k+1,M);
            else backtracking(k+1,M+1);
        }
    }
}

int main(){
    fin>>N;
    for(short i=1;i<=N;++i)
        fin>>(p[i]+1);

    backtracking(1,0);

    fout<<nr;

    fin.close();
    fout.close();
    return 0;
}