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;
#define FOR(i,s,e) for(int i=s;i<e;i++)
#define REP(i,n) FOR(i,0,n)
#define all(a) (a).begin(),(a).end()
typedef long long LL;
const LL mod = 1000000007;
int m[10][10];
int cnt;
int check(int a,int b,int c,int d,int e)
{
    return m[m[m[m[m[0][a]][b]][c]][d]][e];
}
int main(){
    cin.tie(0);
    for(int i=0;i<10;i++)for(int j=0;j<10;j++)cin>>m[i][j];
    for(int i=0;i<10000;i++)
    {
        int a=i/1000,b=i/100%10,c=i/10%10,d=i%10;
        int e=m[m[m[m[0][a]][b]][c]][d];
        bool flag=1;
        if(a!=b&&check(b,a,c,d,e)==0)flag=0;
        if(b!=c&&check(a,c,b,d,e)==0)flag=0;
        if(c!=d&&check(a,b,d,c,e)==0)flag=0;
        if(d!=e&&check(a,b,c,e,d)==0)flag=0;
        for(int j=0;j<10;j++)if(a!=j&&check(j,b,c,d,e)==0)flag=0;
        for(int j=0;j<10;j++)if(b!=j&&check(a,j,c,d,e)==0)flag=0;
        for(int j=0;j<10;j++)if(c!=j&&check(a,b,j,d,e)==0)flag=0;
        for(int j=0;j<10;j++)if(d!=j&&check(a,b,c,j,e)==0)flag=0;
        for(int j=0;j<10;j++)if(e!=j&&check(a,b,c,d,j)==0)flag=0;
        if(!flag)cnt++;
    }
    cout<<cnt<<endl;
    return 0;
}