Cod sursa(job #1061953)

Utilizator RaduGabriel2012Dinu Radu RaduGabriel2012 Data 20 decembrie 2013 15:21:04
Problema Copii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("copii.in");
ofstream g("copii.out");
 int n,ok[15][15],mx,s[15],gr[15][15],numsol;
 char c[15];

void Read()
{ int i,j;
    f>>n;
      f.getline(c,3);
   for(i=1;i<=n;i++)
    { f.getline(c,15);

     for(j=1;j<=n;j++)
      ok[i][j]=c[j-1]-48;
    }
}

void Verify()
{ int i,j,sol=1;
     memset(gr,0,sizeof(gr));
    for(i=1;i<=n;i++)
     for(j=1;j<=n;j++)
      if (i!=j)
       if (ok[i][j]) gr[s[i]][s[j]]=1;

  for(i=1;i<=mx;i++)
   for(j=1;j<=mx;j++)
    if (i!=j && !gr[i][j])
      {sol=0;break;}
   if (sol) numsol++;
}
void Back(int k)
{ int i;
  if (k==n+1) { if (mx>1) Verify();}
   else
   { for(i=1;i<=mx;i++)
      {s[k]=i; Back(k+1);}
     mx++; s[k]=mx;
      Back(k+1);
      mx--;
   }
}
int main()
{ Read();
  Back(1);
   g<<numsol;
    return 0;
}