Pagini recente » Cod sursa (job #16004) | Cod sursa (job #2589258) | Cod sursa (job #282148) | Cod sursa (job #1697030) | Cod sursa (job #509646)
Cod sursa(job #509646)
#include <fstream>
#include <iostream>
using namespace std;
int n,a[101][101],x[101],rez;
void VerifSol(int mx){
int ok=true, v[101][101];
for(int i=1;i<=mx;++i)
for(int j=1;j<=mx;++j)
v[i][j]=0;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if(a[i][j]==1 && i-j && x[i]-x[j])
v[x[i]][x[j]]=1;
for(int i=1;i<=mx;++i)
for(int j=1;j<=mx;++j)
if(i-j && v[i][j]==0)
ok = false;
if(ok)
rez++;
}
void back(int k,int nn){
for(int i=1;i<=nn;++i){
x[k]=i;
int mx = 0;
for(int j=1;j<=k;++j)
if(x[j]>mx)
mx = x[j];
if(k==n)
VerifSol(mx);
else
back(k+1,mx+1);
}
}
int main(){
ifstream fin("copii.in");
ofstream fout("copii.out");
fin>>n;
char s[111];
fin.getline(s,111);
for(int i=1;i<=n;++i){
fin.getline(s,111);
for(int j=1;j<=n;++j)
a[i][j]=s[j-1]-'0';
}
back(1,1);
fout<<rez-1<<endl;
return 0;
}