Cod sursa(job #3152908)

Utilizator Darius09Cristinescu Darius Petre Darius09 Data 27 septembrie 2023 08:39:59
Problema Copii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <cstring>

using namespace std;

ifstream f("copii.in");
ofstream g("copii.out");

int a[11][11], nr, vf[15][15],st[15],n;
char s[20];

int verif(int m)
{
    int i,j;
    memset(vf, 0, sizeof(vf));
    for(i=1;i<=n;i++)
    {
     for(j=1;j<=m;j++)
     {
      if(a[i][j]==1){vf[st[i]][st[j]]=1;}
     }
    }
    for(i=1;i<=m;i++)
    {
     for(j=1;j<=m;j++)
     {
      if(i!=j&&vf[i][j]!=1){return 0;}
     }
    }
    return 1;
}

void bk(int k , int m)
{
    int i;
    if(k==n && verif(m)==1){nr++;}
    if(k==n) return;
    for(i=1;i<=m+1;i++)
    {
     st[k]=i;
     bk(k+1, max(i,m));
    }

}

int main()
{
    int i,j;
    f>>n;
    for(i=1;i<=n;i++)
    {
     f>>s;
     for(j=0;j<n;j++)
     {
      a[i][j+1]=s[j]-'0';
     }
    }
    bk(0, 0);
    g<<nr;
    return 0;
}