Pagini recente » Cod sursa (job #2855565) | Cod sursa (job #2959829) | Cod sursa (job #876642) | Cod sursa (job #3030295) | Cod sursa (job #1727280)
#include <bits/stdc++.h>
using namespace std;
ifstream f("copii.in");
ofstream g("copii.out");
int n,x[20],sol;
bool a[20][20],b[20][20];
char s[20];
bool verif(int grupe)
{
int i,j;
for(i=1;i<=grupe;i++)
for(j=1;j<=grupe;j++)
a[i][j]=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(b[i][j])
a[x[i]][x[j]]=1;
for(i=1;i<=grupe;i++)
for(j=1;j<=grupe;j++)
if(!a[i][j]&&i!=j)
return 0;
return 1;
}
void my_back(int poz,int grupe)
{
if(poz==n+1)
sol += verif(grupe);
else
{
int i=1;
while(i<=grupe)
{
x[poz]=i;
my_back(poz+1,grupe);
i++;
}
x[poz]=grupe+1;
my_back(poz+1,grupe+1);
}
}
int main()
{
f>>n;
f.get();
int i,j;
for(i=1;i<=n;i++)
{
f.getline(s,19);
for(j=0;j<n;j++)
b[i][j+1]=s[j]-'0';
}
my_back(1,0);
g<<sol-1 << "\n";
g.close();
return 0;
}