Cod sursa(job #2983870)

Utilizator raileanu-alin-gabrielRaileanu Alin-Gabriel raileanu-alin-gabriel Data 23 februarie 2023 11:03:36
Problema Copii Scor 10
Compilator cpp-64 Status done
Runda Simulare IIOT cu respect 4 Marime 1.04 kb
#include <fstream>
#include <vector>
const int NMAX=15;

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

void bkt(int);
void verif();

int maxim, ans, n;
int p[NMAX];
bool f[NMAX];
vector <int> v[NMAX], a[NMAX];

int main()
{
  int i, j;
  char nr;
  fin>>n;
  for(i=1; i<=n; i++)
  {
    for(j=1; j<=n; j++)
    {
      fin>>nr;
      if(nr=='1') a[i].push_back(j);
    }
  }
  bkt(1);
  fout<<ans-1<<'\n';
}

void bkt(int poz)
{
  int i, aux;
  if(poz==n+1) verif();
  else
  {
    for(i=1; i<=maxim+1; i++)
    {
      p[poz]=i;
      aux=maxim;
      if(i==maxim+1) maxim++;
      bkt(poz+1);
      maxim=aux;
    }
  }
}

void verif()
{
  int i, j;
  for(i=1; i<=maxim; i++) v[i].clear();
  for(i=1; i<=n; i++) v[p[i]].push_back(i);
  for(i=1; i<=maxim; i++)
  {
    for(j=1; j<=maxim; j++) f[i]=false;
    for(auto k:v[i])
    {
      for(auto j:a[k]) f[p[j]]=true;
    }
    for(j=1; j<=maxim; j++)
    {
      if(j!=i && !f[j]) return;
    }
  }
  ans++;
}