Pagini recente » Cod sursa (job #1992303) | Cod sursa (job #1992305) | Cod sursa (job #1506059) | Cod sursa (job #2199177) | Cod sursa (job #1868221)
#include <cstdio>
using namespace std;
FILE *f, *g;
int n;
int a[200][200];
int p[200][200];
void readFile()
{
f = fopen("copii.in", "r");
fscanf(f, "%d\n", &n);
int i, j;
char spatiu;
for(i = 1; i <= n; i ++)
{
for(j = 1; j <= n; j ++)
{
fscanf(f, "%c", &spatiu);
p[i][j] = spatiu - '0';
}
fscanf(f, "%c", &spatiu);
}
fclose(f);
}
int rez;
int stk[200];
void verif(int mx)
{
int i;
int j;
for(i = 1; i <= n; i ++)
{
// printf("%d ", stk[i]);
for(j = 1; j <= n; j ++)
if(p[i][j] == 1)
a[stk[i]][stk[j]] = p[i][j];
}
// printf("%d\n", mx);
int ok = 1;
for(i = 1; i <= mx; i ++)
{
for(j = 1; j <= mx; j ++)
{
if(i != j && a[i][j] == 0)
{
ok = 0;
}
a[i][j] = 0;
}
}
rez += ok;
}
void bkt(int k, int mx)
{
if(k == n + 1)
{
verif(mx);
}
else
{
int i;
// printf("%d %d\n", mx + 1, k);
for(i = 1; i <= mx; i ++)
{
stk[k] = i;
bkt(k + 1, mx);
}
stk[k] = mx + 1;
bkt(k + 1, mx + 1);
}
}
void solve()
{
g = fopen("copii.out", "w");
bkt(1, 0);
fprintf(g, "%d\n", rez - 1);
fclose(g);
}
int main()
{
readFile();
solve();
return 0;
}