Pagini recente » Cod sursa (job #28162) | Cod sursa (job #410545) | Cod sursa (job #3256631) | Cod sursa (job #2285644) | Cod sursa (job #647192)
Cod sursa(job #647192)
#include<fstream>
#include<cstring>
using namespace std;
string s;
int sol,nr,n,v[11],a[11],m[11][11];
ifstream f("copii.in");
ofstream g("copii.out");
int verifica(){
int j,k,i,ok;
ok=1;
for(i=1;i<=nr;i++){
ok=1;
memset(v,0,sizeof(v));
for(j=1;j<=n;j++)
if(a[j]==i)
for(k=1;k<=n;k++)
if(m[j][k]==1)
v[a[k]]=1;
for(j=1;j<=nr;j++)
if((j!=i)&&(v[j]==0)){
ok=0;
break;
}
if(ok==0) break;
}
return ok;
}
void back(int l){
int i,k;
if(l==n+1) sol+=verifica();
else{
k=nr+1;
for(i=1;i<=k;i++){
a[l]=i;
if(i==k) nr++;
back(l+1);
if(i==k) nr--;
}
}
}
int main(){
int i,j;
f>>n;
nr=0;
getline(f,s);
for(i=1;i<=n;i++)
{
getline(f,s);
for(j=0;j<=n-1;j++)
m[i][j+1]=s[j]-48;
}
back(1);
g<<sol-1;
return 0;
}