Cod sursa(job #2959800)

Utilizator andreibrosPeta Andrei Mathias andreibros Data 2 ianuarie 2023 18:19:06
Problema Copii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("copii.in");
ofstream out("copii.out");
int a[12][12];
int n;
bool viz[12][12];
char s[12];
int v[12];
int sol=0;
bool verif(int m)
{
    memset(viz,0,sizeof(viz));
    for(int i=1; i<=n; i++)
        for(int j=1; j<=n; j++)
            if(a[i][j]==1)
                viz[v[i]][v[j]]=1;

    for(int i=1; i<=m; i++)
        for(int j=1; j<=m; j++)
            if(i!=j && viz[i][j]==0)
                return 0;
    return 1;
}


void bkt(int k, int m)
{
    if(k==n+1)
    {
        if(verif(m))
            sol++;
        return;
    }
    for(int i=1; i<=m+1; i++)
    {
        v[k]=i;
        bkt(k+1,i);
    }

}
int main()
{
    in>>n;
    in.get();
    for(int i=1; i<=n; i++)
    {

        in.getline(s,12);
        for(int j=0; j<n; j++)
            if(s[j]=='1')
                a[i][j+1]=1;
    }



    bkt(1,0);
    out<<sol-1;


    return 0;
}