Cod sursa(job #2878092)

Utilizator Vasile_AndreiVasile Andrei Calin Vasile_Andrei Data 25 martie 2022 19:46:24
Problema Copii Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <iostream>
#include <fstream>

using namespace std;

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

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

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

    for(i=1;i<=M;++i)
        for(j=1;j<=M;++j)
            a[i][j]=0;

    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 false;

    return true;
}

void backtracking(short k, short M){
    if(k==N+1) nr=nr+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;
}