Pagini recente » Cod sursa (job #597693) | Cod sursa (job #1825646) | Cod sursa (job #691454) | Cod sursa (job #1767360) | Cod sursa (job #444680)
Cod sursa(job #444680)
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("copii.in");
ofstream out("copii.out");
int sol[1<<10],n;
char a[20][20];
bool adiacenta[20][20];
int modalitati=0;
void prelucrare(int m){
int i,j;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
if(a[i][j]=='1'){
adiacenta[sol[i]][sol[j]]=1;
}
}
}
int ok=1;
for(i=1;i<=m;i++){
for(j=1;j<=m;j++){
if(adiacenta[i][j]!=1 && i!=j){
ok=0;
break;
}
}
}
if(ok==1){
modalitati++;
}
}
void bkt(int p,int m){
int aux = m;
if(p==n+1){
prelucrare(m);
return;
}
for(int i=1;i<=1+aux;i++){
sol[p]=i;
m=max(m,i);
bkt(p+1,m);
}
}
int main(){
in>>n>>ws;
int i,j;
for(i=1;i<=n;i++){
in.getline(1+a[i],20);
}
bkt(1,0);
out<<modalitati-1;
return 0;
}