Pagini recente » Cod sursa (job #693082) | Cod sursa (job #981429) | Cod sursa (job #2979615) | Cod sursa (job #416282) | Cod sursa (job #1357686)
#include<fstream>
#include<cstring>
using namespace std;
int n,i,j,nr,s,v[11][11],y[11][11],x[11],z[11];
char ss[11][11];
//FILE *f,*g;
ifstream fin("copii.in");
ofstream fout("copii.out");
void back(int k){
if(k==n+1){
int ok=1;
for(int j=1;j<=nr;j++){
for(int i=0;i<=10;i++){
z[i]=0;
}
z[j]=1;
for(int i=1;i<=n;i++){
if(x[i]==j){
for(int ii=1;ii<=n;ii++){
if( v[i][ii] == 1){
z[ x[ii] ]=1;
}
}
}
}
for(int i=1;i<=nr;i++){
if(z[i] != 1 || nr == 1)
ok=0;
}
}
s+=ok;
return;
}
for(int i=1;i<=nr;i++){
x[k]=i;
back(k+1);
}
x[k]=++nr;
back(k+1);
nr--;
}
int main(){
//f=fopen("copii.in","r");
//g=fopen("copii.out","w");
//fscanf(f,"%d",&n);
fin>>n;
for(i=1;i<=n;i++){
// fscanf(f,"%s",ss[i]+1);
fin>>ss[i];
for(j=0;j<n;j++){
v[i][j+1]=ss[i][j]-'0';
}
}
back(1);
// fprintf(g,"%d",s-1);
fout<<s;
// fclose(f);
// fclose(g);
return 0;
}