Pagini recente » Cod sursa (job #3225682) | Cod sursa (job #1538703) | Cod sursa (job #1751183) | Cod sursa (job #1819465) | Cod sursa (job #434652)
Cod sursa(job #434652)
#include<fstream>
#include<cstring>
using namespace std;
string s;
int sol,vmax,n,fr[11],a[11],mat[11][11];
ifstream fi("copii.in");
ofstream fo("copii.out");
int verifica(void)
{
int j,t,i,ok;
ok=1;
for(i=1;i<=vmax;i++)
{
ok=1;
memset(fr,0,sizeof(fr));
for(j=1;j<=n;j++)
if(a[j]==i) for(t=1;t<=n;t++)
if(mat[j][t]==1) fr[a[t]]=1;
for(j=1;j<=vmax;j++)
if((j!=i)&&(fr[j]==0)) { ok=0; break; }
if(ok==0) break;
}
return ok;
}
void back(int l)
{
int i,ls;
if(l==n+1) sol+=verifica(); else
{
ls=vmax+1;
for(i=1;i<=ls;i++)
{
a[l]=i;
if(i==ls) vmax++;
back(l+1);
if(i==ls) vmax--;
}
}
}
int main()
{
int i,j;
fi>>n;
vmax=0;
getline(fi,s);
for(i=1;i<=n;i++)
{
getline(fi,s);
for(j=0;j<=n-1;j++)
mat[i][j+1]=s[j]-48;
}
back(1);
fo<<sol-1;
fo.close();
return 0;
}