Pagini recente » Cod sursa (job #1315415) | Cod sursa (job #2532995) | Cod sursa (job #1340862) | Cod sursa (job #147120) | Cod sursa (job #2114453)
#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int priet[11][11];
int sol[11];
int n,cazuri;
int grupe[11][11];
int team[11];
void prelucrare(int m){
int i,j,grf=0;
for(i=1;i<=n;i++){
grupe[sol[i]][++grupe[sol[i]][0]]=i;
}
int k;
for(i=1;i<=m;i++){
for(j=1;j<=grupe[i][0];j++)
for(k=1;k<=n;k++)
if(priet[grupe[i][j]][k]==1)
team[sol[k]]=1;
j=1;
team[i]=1;
while(j<=m && team[j]==1)
j++;
if(j==m+1)
grf++;
memset(team,0,sizeof(team));
}
if(grf==m && m>=2)
cazuri++;
for(i=1;i<=10;i++){
grupe[i][0]=0;
}
}
void bkt(int p,int m){
if(p-1==n){
prelucrare(m);
return;
}
for(int i=1;i<=m;i++){
sol[p]=i;
bkt(p+1,m);
}
sol[p]=m+1;
bkt(p+1,m+1);
}
int main()
{
char c;
FILE*fin,*fout;
fin=fopen("copii.in","r");
fout=fopen("copii.out","w");
int i,j;
fscanf(fin,"%d ",&n);
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
c=fgetc(fin);
priet[i][j]=c-'0';
}
fscanf(fin," ");
}
bkt(1,0);
fprintf(fout,"%d",cazuri);
return 0;
}