Pagini recente » Cod sursa (job #1163149) | Cod sursa (job #480711) | Cod sursa (job #2477658) | Cod sursa (job #1416539) | Cod sursa (job #1061953)
#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;
}