Pagini recente » Cod sursa (job #2183991) | Cod sursa (job #2884362) | Cod sursa (job #2539488) | Cod sursa (job #2216510) | Cod sursa (job #444682)
Cod sursa(job #444682)
#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<=m;++i)
for(j=1;j<=m;++j)
adiacenta[i][j]=false;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
if(a[i][j]=='1'){
adiacenta[sol[i]][sol[j]]=true;
}
}
}
for(i=1;i<=m;i++){
for(j=1;j<=m;j++){
if(!adiacenta[i][j] && i!=j){
return;
}
}
}
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;
}