Pagini recente » Cod sursa (job #2318377) | Cod sursa (job #1616135) | Cod sursa (job #760210) | Cod sursa (job #1571681) | Cod sursa (job #1727277)
#include <iostream>
#include <fstream>
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 Back(int poz,int grupe)
{
if(poz == n + 1) sol += verif(grupe);
else
{
int i = 1;
while(i <= grupe)
{
x[poz] = i;
Back(poz + 1, grupe);
i++;
}
x[poz] = grupe + 1;
Back(poz + 1, grupe + 1);
}
}
int main()
{
f >> n;
int i,j;
for(i = 1; i <= n; i++)
{
f.getline(s, 11);
for( j = 0; j < n; j++) b[i][j + 1] = s[j] - '0';
}
f.close();
Back(1,0);
g << sol << "\n";
g.close();
return 0;
}