Pagini recente » Cod sursa (job #3175985) | Cod sursa (job #2301919) | Cod sursa (job #1017228) | Cod sursa (job #1255787) | Cod sursa (job #1376487)
#include <fstream>
#include <string.h>
#define NMax 15
using namespace std;
ifstream f("copii.in");
ofstream g("copii.out");
int n, i, j, stack[NMax], Max[NMax], nr, prietenie[NMax][NMax];
char copii[NMax][NMax];
void test_copii()
{
memset (prietenie, 0, sizeof (prietenie));
for (int i=1; i<=n; i++)
for (int j=1; j<=n; j++)
if (stack[i] != stack[j] && copii[i][j] == '1')
prietenie[stack[i]][stack[j]] = 1;
int ok=1;
for (int i=1; i<=Max[n] && ok == 1; i++)
for (int j=1; j<=Max[n] && ok == 1; j++)
if (prietenie[i][j] != 1 && i!=j)
ok=0;
if (ok == 1)
nr++;
}
void back(int k)
{
if (k == n+1)
test_copii();
else {
for (int i=1; i <= 1 + Max[k-1]; i++) {
stack[k] = i;
Max[k] = max(i, Max[k-1]);
back(k+1);
}
}
}
int main()
{
f >> n;
for (i=1; i<=n; i++)
f>>copii[i]+1;
back(1);
g<<nr-1;
return 0;
}