Cod sursa(job #1036483)

Utilizator ade_tomi27Enache Adelina ade_tomi27 Data 19 noiembrie 2013 13:42:42
Problema Copii Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb

#include<stdio.h>
int a[14][14],v[13],st[13],n,gr[13][13],sol;
void verif()
{

    if(v[1]!=n)
    {
        int max=0;
        for(int i=1;i<=n;i++)
        {

            if(st[i]>max)
                max=st[i];
            for(int j=1;j<=n;j++)
                gr[i][j]=0;
        }
        int i,j;
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
            {

                if(a[i][j]=='1')
                    gr[st[i]][st[j]]=1;
            }
        int ok=0;
        for(i=1;i<=max;i++)
            for(j=1;j<=max;j++)
                if(i!=j && gr[i][j]==0) ok=1;
        if(ok==0)
            sol++;

    }

}
void back(int k)
{

    if(k==n+1)
       verif();
    else
    {

       for(int i=1;i<=n;i++)
       {
           int ok=0;
           for(int j=1;j<i;j++)
           {
               if(v[j]==0)
                    ok=1;

           }
           if(ok==0){
                st[k]=i;
                v[i]++;
                back(k+1);
                v[i]--;
           }

       }
    }
}
char cg;
int main()
{
    freopen("copii.in","r",stdin);
    freopen("copii.out","w",stdout);
    scanf("%d ",&n);
    int i,j;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
            scanf("%c",&a[i][j]);
        scanf("%c",&cg);
    }
    back(1);
    printf("%d",sol);
    return 0;
}