Pagini recente » Cod sursa (job #99447) | Cod sursa (job #101259) | Cod sursa (job #1449502) | Cod sursa (job #974384) | Cod sursa (job #613460)
Cod sursa(job #613460)
#include <cstdio>
#include <cstring>
#define file_in "copii.in"
#define file_out "copii.out"
int n,sol;
char s[20][20];
int p[20];
void citire()
{
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d\n", &n);
for (int i=1;i<=n;++i)
gets(s[i]+1);
}
int verif(int nr)
{
int q[20][20];
int i,j;
memset(q,0,sizeof(q));
for (i=1;i<=n;++i)
for (j=1;j<=n;++j)
if (s[i][j]=='1')
q[p[i]][p[j]]=1;
for (i=1;i<=nr;++i)
for (j=1;j<=nr;++j)
if (i!=j && q[i][j]==0)
return 0;
return 1;
}
void back(int k, int nr)
{
int i;
if (k==n+1)
{
if (nr>1)
sol+=verif(nr);
return ;
}
for (i=1;i<=nr;++i)
{
p[k]=i;
back(k+1,nr);
}
p[k]=nr+1;
back(k+1,nr+1);
}
void solve()
{
back(1,0);
printf("%d\n", sol);
}
int main()
{
citire();
solve();
fclose(stdin);
fclose(stdout);
return 0;
}