Pagini recente » Cod sursa (job #517903) | Cod sursa (job #751988) | Cod sursa (job #919041) | Borderou de evaluare (job #348548) | Cod sursa (job #799921)
Cod sursa(job #799921)
#include<fstream>
using namespace std;
ifstream in("copii.in");
ofstream out("copii.out");
int n,sol[14],mat[15][15],nrpos;
//bool prietenie[15][15];
void bkt(int,int);
void vrf_prietenie(int);
int main()
{
int i,j;
in>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
in>>mat[i][j];
sol[1]=1;
bkt(2,1);
out<<nrpos;
return 0;
}
void bkt(int p,int max)
{
if(p-1==n && max>=2)
{
vrf_prietenie(max);
return;
}
if(p-1==n &&max<2)
return;
for(int i=1;i<=max;i++)
{
sol[p]=i;
bkt(p+1,max);
}
sol[p]=max+1;
bkt(p+1,max+1);
}
void vrf_prietenie(int max)
{
int i,j,k=0,l;
bool prietenie[15][15]={0};
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(mat[i][j]==1)
{
prietenie[sol[i]][sol[j]]=1;
}
}
}
for(i=1;i<=max;i++)
for(j=1;j<=max;j++)
{
if(i==j)
prietenie[i][j]=1;
if(prietenie[i][j]==0)
k=1;
}
if(k==0)
nrpos++;
}