Cod sursa(job #1553463)

Utilizator AnaRaduAna-Maria Radu AnaRadu Data 19 decembrie 2015 21:37:27
Problema Copii Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>
#define lim 20
int n,m,sol,st[lim],mat[lim][lim],v[lim][lim];
int verif(){
    int i,j;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++){
            v[i][j]=0;
            if(mat[i][j]==1&&st[i]!=st[j])
                v[st[i]][st[j]]=1;
        }
    for(i=1;i<=m;i++)
        for(j=1;j<=m;j++)
            if(i!=j&&v[i][j]==0)
                return 0;
    return 1;
}
void bkt(int k){
    int i;
    if(k==n+1)
        sol+=verif();
    else{
        for(i=1;i<=m;i++){
            st[k]=i;
            bkt(k+1);
        }
        m++;
        st[k]=m;
        bkt(k+1);
        m--;
    }
}
int main(){
    freopen("copii.in","r",stdin);
    freopen("copii.out","w",stdout);
    int i,j;
    char c;
    scanf("%d\n",&n);
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            scanf("%c",&c);
            if(c=='1')
                mat[i][j]=1;
        }
        scanf("\n");
    }
    bkt(1);
    sol--;
    printf("%d",sol);
    return 0;
}