Pagini recente » Cod sursa (job #1699528) | Cod sursa (job #398883) | Cod sursa (job #516635) | Cod sursa (job #2493642) | Cod sursa (job #550743)
Cod sursa(job #550743)
Utilizator |
HoriaC HoriaClement |
Data |
9 martie 2011 21:29:15 |
Problema |
Copii |
Scor |
100 |
Compilator |
cpp |
Status |
done |
Runda |
bkt |
Marime |
0.78 kb |
#include <fstream>
#include <cstdio>
using namespace std;
ofstream out("copii.out");
int n,sol[1<<4],cnt;
char s[1<<4][1<<4];
void citire()
{
freopen("copii.in","r",stdin);
scanf("%d\n",&n);
for(int i=1;i<=n;++i)
gets(s[i]+1);
}
void prelucrare(int x)
{
int mat[1<<4][1<<4]={0};
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if(s[i][j]=='1')
mat[sol[i]][sol[j]]=1;
for(int i=1;i<=x;++i)
for(int j=1;j<=x;++j)
if (i!=j && mat[i][j]==0)
return;
++cnt;
}
void bkt(int p,int val)
{
if(p==n+1)
{
prelucrare(val);
return;
}
for(int i=1;i<=val;++i)
{
sol[p]=i;
bkt(p+1,val);
}
sol[p]=val+1;
bkt(p+1,val+1);
}
void work()
{
bkt(1,0);
out<<cnt-1;
}
int main()
{
citire();
work();
return 0;
}