TheAnshul

Prison Break

May 25th, 2018
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.16 KB | None | 0 0
  1. /***************************************************************************
  2.  * #######                    #                                            *
  3.  *    #     #    #  ######   # #    #    #   ####   #    #  #    #  #      *
  4.  *    #     #    #  #       #   #   ##   #  #       #    #  #    #  #      *
  5.  *    #     ######  #####  #     #  # #  #   ####   ######  #    #  #      *
  6.  *    #     #    #  #      #######  #  # #       #  #    #  #    #  #      *
  7.  *    #     #    #  #      #     #  #   ##  #    #  #    #  #    #  #      *
  8.  *    #     #    #  ###### #     #  #    #   ####   #    #   ####   ###### *
  9.  ***************************************************************************/
  10. #include<bits/stdc++.h>
  11. #define ll          long long
  12. #define pb          push_back
  13. #define endl        '\n'
  14. #define pii         pair<ll int,ll int>
  15. #define vi          vector<ll int>
  16. #define all(a)      (a).begin(),(a).end()
  17. #define F           first
  18. #define S           second
  19. #define sz(x)       (ll int)x.size()
  20. #define hell        1000000007
  21. #define rep(i,a,b)  for(ll int i=a;i<b;i++)
  22. #define lbnd        lower_bound
  23. #define ubnd        upper_bound
  24. #define bs          binary_search
  25. #define mp          make_pair
  26. using namespace std;
  27.  
  28. #define N  100005
  29. int a[21][21];
  30.  
  31. ll solve(ll n,ll i, ll j)
  32. {
  33.     if(a[i][j]==1)
  34.         return 0;
  35.     if(i==n && j==n)
  36.         return 1;
  37.     ll s=0;
  38.     a[i][j]=1;
  39.     s+=solve(n,i+1,j);
  40.     s+=solve(n,i-1,j);
  41.     s+=solve(n,i,j+1);
  42.     s+=solve(n,i,j-1);
  43.     a[i][j]=0;
  44.     return s;
  45. }
  46. int main()
  47. {
  48.     ios_base::sync_with_stdio(false);
  49.     cin.tie(0);
  50.     cout.tie(0);
  51.     int TESTS=1;
  52.     cin>>TESTS;
  53.     while(TESTS--)
  54.     {
  55.         ll n;
  56.         cin>>n;
  57.         rep(i,1,n+1)
  58.         {
  59.             rep(j,1,n+1)
  60.             {
  61.                 cin>>a[i][j];
  62.             }
  63.         }
  64.         /*********creating boundary*************/
  65.         rep(i,0,n+2)
  66.         {
  67.             a[i][0]=1;
  68.             a[i][n+1]=1;
  69.         }
  70.         rep(i,1,n+1)
  71.         {
  72.             a[0][i]=1;
  73.             a[n+1][i]=1;
  74.         }
  75.         /**************************************/
  76.         a[0][0]=0; // because of error in problem setter's code, without this code will fail at test 8#
  77.                    // though it is not correct according to que.
  78.         if(a[n][n]==1)
  79.         {
  80.             cout<<0<<endl;
  81.             continue;
  82.         }
  83.         cout<<solve(n,1,1)<<endl;
  84.     }
  85.     return 0;
  86. }
Add Comment
Please, Sign In to add comment