Pagini recente » Cod sursa (job #1556020) | Cod sursa (job #2911298) | Cod sursa (job #1703339) | Cod sursa (job #1694707) | Cod sursa (job #668914)
Cod sursa(job #668914)
#include<cstdio>
#include<cstring>
#define NMAX 15
using namespace std;
int N, D[NMAX], sol;
char G[NMAX][NMAX];
void citire()
{
freopen("copii.in","r",stdin);
scanf("%d",&N);
for(int i = 1; i <= N; ++i)
gets(G[i]+1);
}
int bun(int nrg)
{
int viz[NMAX][NMAX];
memset(viz, 0, sizeof viz);
for(int i = 1; i <= N; ++i)
for(int j = 1; j <= N; ++j)
if(G[i][j] == '1')
viz[D[i]][D[j]] = 1;
for(int i = 1; i <= nrg; ++i)
for(int j = 1; j <= nrg; ++j)
if(i != j && viz[i][j] == 0)
return 0;
return 1;
}
void backtracking(int k, int nrg)
{
if(k == N+1)
{
if(nrg > 1)
sol += bun(nrg);
return;
}
for(int i = 1; i <= nrg; ++i)
{
D[k] = i;
backtracking(k+1, nrg);
}
D[k] = nrg + 1;
backtracking(k+1, nrg+1);
}
int main()
{
freopen("copii.out","w",stdout);
citire();
backtracking(1, 0);
printf("%d",sol);
return 0;
}