Cod sursa(job #2114409)

Utilizator FunnyStockyMihnea Andreescu FunnyStocky Data 25 ianuarie 2018 16:21:39
Problema Copii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream cin("copii.in");
ofstream cout("copii.out");
const int nmax=10;
int v[nmax+5][nmax+5];
int n,aux[nmax+5];
int sol[nmax][nmax+5],k[nmax+5],ok[nmax+5][nmax+5];
int ans;
char ch;
void bkt(int strat,int m)
{
    if(strat==n)
    {
        if(m==1)
            return;
        for(int i=1;i<=m;i++)
            k[i]=0;
        for(int i=1;i<=m;i++)
            for(int j=1;j<=m;j++)
                ok[i][j]=0;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
                if(aux[i]!=aux[j])
                {
                    int a=aux[i],b=aux[j];
                    if(v[a][b]==1)
                        ok[a][b]=1;
                }
        }
        bool okk=1;
        for(int i=1;i<=m;i++)
            for(int j=1;j<=m;j++)
                if(i!=j and ok[i][j]==0)
                    okk=0;
        ans+=okk;
        return;
    }
    for(int i=1;i<=m+1;i++)
    {
        aux[++strat]=i;
        bkt(strat,max(m,i));
        strat--;
    }
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin.get();
        for(int j=1;j<=n;j++)
        {
            ch=cin.get();
            v[i][j]=ch-'0';
        }
    }
    bkt(0,0);
    cout<<ans;
    return 0;
}
/**
**/