Pagini recente » Cod sursa (job #1509916) | Cod sursa (job #1181345) | Cod sursa (job #1818686) | Cod sursa (job #1019232) | Cod sursa (job #1701302)
#include <iostream>
#include <fstream>
#include <bitset>
using namespace std;
ifstream in("copii.in");
ofstream out("copii.out");
bool prieten[15][15];
bool viz[15][15];
int posibilitati;
string s = "";
int v[20];
int n, nr;
void _back_(int poz)
{
if(poz == n + 1)
{
if(nr == 1)
return;
for(int i = 1; i <= nr; i++)
{
for(int j = 1; j <= nr; j++)
{
if(i != j)
viz[i][j] = 0;
else
viz[i][j] = 1;
}
}
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
if(i != j && prieten[i][j] == 1 && v[i] != v[j])
viz[v[i]][v[j]] = 1;
for(int i = 1; i <= nr; i++)
for(int j = 1; j <= nr; j++)
if(!viz[i][j])
return;
posibilitati++;
}
else
{
for(int i = 1; i <= nr; i++)
{
v[poz] = i;
_back_(poz + 1);
}
v[poz] = ++nr;
_back_(poz + 1);
nr--;
}
}
int main()
{
in >> n;
for(int i = 1; i <= n; i++)
{
s = "";
in >> s;
for(int j = 1; j <= n; j++)
prieten[i][j] = s[j - 1] - '0';
}
_back_(1);
out << posibilitati;
return 0;
}