fork download
  1. #include<iostream>
  2. #include<cmath>
  3. #include<vector>
  4. #include<climits>
  5. #include<algorithm>
  6. #include<numeric>
  7. #include<iomanip>
  8. #include<map>
  9. #include<unordered_map>
  10. #include<set>
  11. #include<random>
  12. #include<cassert>
  13. using namespace std;
  14. #define ll long long int
  15. #define ld long double
  16. const ll Mod = (ll)1e9+7;
  17. ll n;
  18. set<pair<ll,ll> > ss;
  19. ll M[100][100];
  20.  
  21. void f(ll x,ll y)
  22. {
  23. if(x>n || y>n || x<1 || y<1)
  24. {
  25. return;
  26. }
  27. if(M[x][y]==0){return;}
  28.  
  29. if(M[x][y])
  30. {
  31. // can be reached
  32. ss.erase({x,y});
  33. }
  34. M[x][y]=0 ;
  35.  
  36. f(x+1,y+2);
  37. f(x+2,y+1);
  38. f(x-1,y-2);
  39. f(x-2,y-1);
  40. f(x+1,y-2);
  41. f(x-1,y+2);
  42. f(x+2,y-1);
  43. f(x-2,y+1);
  44.  
  45. M[x][y]=1;
  46. // to block after one call
  47.  
  48. return;
  49. }
  50.  
  51. int main()
  52. {
  53. cin>>n;
  54. // n*n;
  55. for(ll i=1;i<=n;i++)
  56. for(ll j=1;j<=n;j++)
  57. {cin>>M[i][j];
  58. if(M[i][j]){ss.insert({i,j}) ;}
  59. }
  60.  
  61. f(1,1);
  62.  
  63. ll ans = (ll)ss.size() ;
  64. cout<<ans<<endl;
  65.  
  66. return 0;
  67. }
  68.  
Success #stdin #stdout 0s 4560KB
stdin
Standard input is empty
stdout
0