Pagini recente » Cod sursa (job #2545085) | Cod sursa (job #414751) | Cod sursa (job #1793993) | Cod sursa (job #1433379) | Cod sursa (job #2336524)
#include <fstream>
using namespace std;
ifstream f ("copii.in");
ofstream g ("copii.out");
bool ec[12][12];
int sol[12];
char a[12][12];
int n;
int S;
inline void citire()
{
f >> n;
for (int i = 1; i <= n; ++i)
{
f >> (a[i] + 1);
}
}
bool verif(int m)
{
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j)
ec[i][j] = false;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j)
if (a[i][j] == '1') ec[sol[i]][sol[j]] = 1;
for (int i = 1; i <= m; ++i)
for (int j = 1; j <= m; ++j)
if (ec[i][j] == false && i != j)
return false;
return true;
}
void bac (int el, int nrec)
{
if (el == n + 1)
{
if (nrec > 1 && verif(nrec) == true)
S++;
}
else
{
for (int i = 1; i <= nrec; ++i)
{
sol[el] = i;
bac(el + 1, nrec);
}
sol[el] = nrec + 1;
bac(el + 1, nrec + 1);
}
}
int main()
{
citire();
bac(1, 0);
g << S << '\n';
return 0;
}