Pagini recente » Cod sursa (job #1298324) | Cod sursa (job #3131284) | Cod sursa (job #2867772) | Cod sursa (job #284550) | Cod sursa (job #1384730)
#include <stdio.h>
#define MAXN 10
char ma[MAXN][MAXN], aux[MAXN][MAXN];
int v[MAXN];
int rez = 0;
inline char bun(int n){
int i, j, max = 0;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
aux[i][j] = 0;
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
if(ma[i][j] == 1){
aux[v[i]][v[j]] = 1;
}
}
if(v[i] > max)
max = v[i];
}
int sum;
char rez = 1;
if(max == 0)
rez = 0;
for(i = 0; i <= max; i++){
sum = 0;
for(j = 0; j <= max; j++){
if(i != j && aux[i][j] == 1)
sum++;
}
if(sum < max)
rez = 0;
}
return rez;
}
void bkt(int c, int g, int n){
if(c == n){
if(bun(n))
rez++;
}
else{
int i;
for(i = 0; i < g; i++){
v[c] = i;
bkt(c + 1, g, n);
}
v[c] = g;
bkt(c + 1, g + 1, n);
}
}
int main(){
FILE *in = fopen("copii.in", "r");
int n, i, j;
fscanf(in, "%d ", &n);
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
ma[i][j] = fgetc(in);
ma[i][j] -= '0';
}
ma[i][i] = 0;
fgetc(in);
}
fclose(in);
bkt(0, 0, n);
FILE *out = fopen("copii.out", "w");
fprintf(out, "%d", rez);
fclose(out);
return 0;
}