Pagini recente » Cod sursa (job #1137868) | Rating FMI Cristian-Andrei Ionescu (TheShark62) | Cod sursa (job #308884) | Cod sursa (job #2300464) | Cod sursa (job #1765572)
#include <fstream>
#include <string.h>
using namespace std;
ifstream in("copii.in");
ofstream out("copii.out");
int n;
char mat[11][11];
bool gasti[11][11];
int sol[11];
int grupari;
void prelucrare(int m) {
for(int i = 0; i < m; i++) {
for(int j = 0; j < m; j++) {
gasti[i][j] = 0;
}
}
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
if(mat[i][j] == '1')
gasti[sol[i]][sol[j]] = gasti[sol[j]][sol[i]] = 1;
for(int i = 0; i < m; i++) {
for(int j = 0; j < m; j++) {
if(!gasti[i][j] and i != j) {
return;
}
}
}
grupari++;
}
void backtrack(int p, int m) {
if(p == n) {
prelucrare(m);
return;
}
for(int i = 0; i < m; i++) {
sol[p] = i;
backtrack(p+1, m);
}
sol[p] = m+1;
backtrack(p+1, m+1);
}
int main() {
in>>n>>ws;
for(int i = 0; i < n; i++)
in.getline(mat[i], 15);
backtrack(0, 1);
out<<grupari-1;
return 0;
}