Problem: Example

Input

0 3 1 7 5 9 8 6 4 2
7 0 9 2 1 5 4 8 6 3
4 2 0 6 8 7 1 3 5 9
1 7 5 0 9 8 3 4 2 6
6 1 2 3 0 4 5 9 7 8
3 6 7 4 2 0 9 5 8 1
5 8 6 9 7 2 0 1 3 4
8 9 4 5 3 6 2 0 1 7
9 4 3 8 6 1 7 2 0 5
2 5 8 1 4 3 6 7 9 0


Output

0

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
int mat[15][15];
int jym;
int cc(int a,int b,int c,int d,int e)
{
    if(mat[mat[mat[mat[mat[0][a]][b]][c]][d]][e]==0) return 1;
    else return 0;
}

int check(int a,int b,int c,int d)
{
    int ans=0;
    int jym=mat[mat[mat[mat[0][a]][b]][c]][d];
    for(int i=0;i<=9;i++)
    {
        if(i!=a) ans+=cc(i,b,c,d,jym);
    }
    for(int i=0;i<=9;i++)
    {
        if(i!=b) ans+=cc(a,i,c,d,jym);
    }
    for(int i=0;i<=9;i++)
    {
        if(i!=c) ans+=cc(a,b,i,d,jym);
    }
    for(int i=0;i<=9;i++)
    {
        if(i!=d) ans+=cc(a,b,c,i,jym);
    }
    for(int i=0;i<=9;i++)
    {
        if(i!=jym) ans+=cc(a,b,c,d,i);
    }
    ans+=b==a?0:cc(b,a,c,d,jym);
    ans+=b==c?0:cc(a,c,b,d,jym);
    ans+=c==d?0:cc(a,b,d,c,jym);
    ans+=d==jym?0:cc(a,b,c,jym,d);
    return ans;
}

int main()
{
    int ans=0;
    for(int i=0;i<10;i++)
    {
        for(int j=0;j<10;j++)
        {
            scanf("%d",&mat[i][j]);
        }
    }
    for(int a=0;a<=9;a++)
    {
        for(int b=0;b<=9;b++)
        {
            for(int c=0;c<=9;c++)
            {
                for(int d=0;d<=9;d++)
                {
                    if(check(a,b,c,d)) ans++;
                }
            }
        }

    }
    printf("%d\n",ans);
    return 0;
}