Pagini recente » Cod sursa (job #523642) | Cod sursa (job #414502) | Cod sursa (job #2711313) | Cod sursa (job #1654286) | Cod sursa (job #427538)
Cod sursa(job #427538)
#include <fstream>
using namespace std;
const int MAX_N = 15;
ifstream fin ("copii.in");
ofstream fout ("copii.out");
int N, D[MAX_N], Sol;
char G[MAX_N][MAX_N];
void citire()
{
fin >> N;
for(int i = 1; i <= N; ++i)
fin >> G[i]+1;
}
int bun(int nrg)
{
int viz[MAX_N][MAX_N];
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 back(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;
back(k+1, nrg);
}
D[k] = nrg + 1;
back(k+1, nrg+1);
}
int main()
{
citire();
back(1, 0);
fout << Sol;
}