Pagini recente » Cod sursa (job #1851505) | Cod sursa (job #2512193) | Cod sursa (job #2710041) | Cod sursa (job #2891186) | Cod sursa (job #3270634)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("copii.in");
ofstream fout("copii.out");
int n, ech[20], nrechipe=0, cnt=0, frecv[15], nrprieteni;
string x;
vector<int> a[100], echipa[15];
void resetfr() {
for(int i=0; i<=13; i++) {
frecv[i]=0;
}
}
void resetechipa() {
for(int i=0; i<=13; i++) {
echipa[i].clear();
}
}
bool verif(int nrechipe) {
resetfr();
resetechipa();
for(int i=1; i<=n; i++) {
echipa[ech[i]].push_back(i);
}
for(int ec=1; ec<=nrechipe; ec++) {
nrprieteni=nrechipe-1;
for(auto vec:echipa[ec]) { /// luam toti membrii ai echipei ec (vec)
for(auto vec1:a[vec]) { /// luam toti prietenii membrului vec (vec1)
//if(frecv[ech[vec1]]==0 && ech[vec1]!=ec) {
frecv[ech[vec1]]++;
// nrprieteni--;
//}
}
/*if(nrprieteni!=0) {
return false;
}*/
}
for(int ec2=1; ec2<=nrechipe; ec2++) {
if(ec2!=ec && frecv[ec2]==0) {
return false;
}
}
}
return true;
}
void bktr(int k) {
int prevech;
if(k==n+1) {
if(verif(nrechipe)) {
cnt++;
}
return;
}
for(int i=1; i<=nrechipe+1; i++) {
ech[k]=i;
prevech=nrechipe;
if(i==nrechipe+1) {
nrechipe++;
}
bktr(k+1);
nrechipe=prevech;
ech[k]=0;
}
}
int main()
{
fin >> n;
for(int i=1; i<=n; i++) {
fin >> x;
for(int j=1; j<=n; j++) {
if(x[j-1]=='1') {
a[i].push_back(j);
}
}
}
bktr(1);
fout << cnt-1;
return 0;
}