Pagini recente » Cod sursa (job #1025855) | Cod sursa (job #1116456) | Cod sursa (job #2741265) | Cod sursa (job #2088193) | Cod sursa (job #1195161)
#include <fstream>
#define lmax 11
using namespace std;
ifstream f("copii.in");
ofstream g("copii.out");
int n,nrsol,nrec;
int echipa[lmax];
char a[lmax][lmax];
inline int verif()
{
int i,j;
int bun[lmax][lmax];
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
bun[i][j]=0;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
if (a[i][j]=='1')
bun[echipa[i]][echipa[j]]=1;
for (i=1;i<=nrec;i++)
for (j=1;j<=nrec;j++)
if (i!=j && bun[i][j]==0)
return 0;
return 1;
}
inline void back(int k)
{
if (k==n+1)
{
if (nrec>1 && verif())
nrsol++;
}
else
{
for (int i=1;i<=nrec;i++)
{
echipa[k]=i;
back(k+1);
}
nrec++;
echipa[k]=nrec;
back(k+1);
nrec--;
}
}
int main()
{
f>>n;
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
f>>a[i][j];
back(1);
g<<nrsol;
f.close();
g.close();
}