Pagini recente » Cod sursa (job #811069) | Cod sursa (job #2337108) | Cod sursa (job #2253445) | Cod sursa (job #214957) | Cod sursa (job #1682094)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("copii.in");
ofstream g("copii.out");
int n,x[20],sol; bool a[20][20],b[20][20]; char s[20];
bool verif(int grupe)
{
int i,j;
for(i=1;i<=grupe;i++)for(j=1;j<=grupe;j++)a[i][j]=0;
for(i=1;i<=n;i++)for(j=1;j<=n;j++)if(b[i][j])a[x[i]][x[j]]=1;
for(i=1;i<=grupe;i++)for(j=1;j<=grupe;j++)if(!a[i][j]&&i!=j)return 0; return 1;
}
void my_back(int poz,int grupe)
{
if(poz==n+1)sol+=verif(grupe); else
{
int i=1;
while(i<=grupe){x[poz]=i;my_back(poz+1,grupe);i++;}
x[poz]=grupe+1; my_back(poz+1,grupe+1);
}
}
int main()
{
f>>n; f.get(); int i,j;
for(i=1;i<=n;i++){f.getline(s,19); for(j=0;j<n;j++)b[i][j+1]=s[j]-'0';}
my_back(1,0);g<<sol-1;
return 0;
}