Pagini recente » Cod sursa (job #309270) | Borderou de evaluare (job #3136148) | Borderou de evaluare (job #2016102) | Cod sursa (job #2761404) | Cod sursa (job #799926)
Cod sursa(job #799926)
#include<fstream>
#include<string>
using namespace std;
ifstream in("copii.in");
ofstream out("copii.out");
string v[12];
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++)
in>>v[i];
// out<<v[2];
for(i=1;i<=n;i++)
for(j=0;j<n;j++)
mat[i][j+1]=v[i][j]-48;
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++;
}