Cod sursa(job #2741613)

Utilizator nubnubMeh Neh nubnub Data 16 aprilie 2021 19:22:41
Problema Copii Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
# include <fstream>
# include <cstring>
using namespace std;
ifstream f("copii.in");
ofstream g("copii.out");
int i,j,n,nr,VV;
int ver[11][11],drum[100][100],a[100];
char s[100];
int verifica()
{
    int ok=1;
    memset(ver, 0, sizeof(ver));
    for (i=1; i<=n; ++i) //vad ce grupe se invecineaza
        for (j=1; j<=n; ++j)
            if (drum[i][j]) ver[a[i]][a[j]]=1;

    for (i=1; i<=nr; ++i)//verific
        for (j=1; j<=nr; ++j)
            if (i!=j && !ver[i][j]) return 0;
    return 1;
}
void back (int k)
{
    if (k==n+1)
    {
       VV+=verifica();
    }
    else
    {
        for (int i=1; i<=nr; ++i)
        {
            a[k]=i;
            back(k+1);
        }

        a[k]=++nr;
        back(k+1);
        --nr;
    }
}
int main ()
{
    f>>n; f.get();
    for (i=1; i<=n; ++i)
    {
        f.getline(s+1,100);
        for (j=1; j<=n; ++j)
            if (s[j]=='1') drum[i][j]=1;
    }
    back(1);
    g<<VV-1<<"\n";
    return 0;
}