fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define MAX 25
  5. #define N 1000000007
  6. #define pb push_back
  7. #define MIN 5005
  8. #define imax 2000000200
  9. #define llmax 1000000002000000000ll
  10. #define PI 3.141592653589793
  11. #define eps 1e-9
  12. #define F first
  13. #define S second
  14. #define vi vector<int>
  15. #define vl vector<ll>
  16.  
  17. ll a[MAX][MAX];
  18. string s,p;
  19. ll n;
  20. ll cnt[20][20][40][40];
  21. ll marked[20][20][40][40];
  22.  
  23. void dfs(ll x, ll y,ll cnt2, ll cnt3){
  24. if(marked[x][y][cnt2][cnt3]==1)
  25. return;
  26. marked[x][y][cnt2][cnt3]=1;
  27. if(x>n || y>n ){
  28. return ;
  29. }
  30. if(a[x][y]==2){
  31. cnt[x][y][cnt2+1][cnt3]=1;
  32. dfs(x+1,y,cnt2+1,cnt3);
  33. dfs(x,y+1,cnt2+1,cnt3);
  34. }
  35. else if(a[x][y]==3){
  36. cnt[x][y][cnt2][cnt3+1]=1;
  37. dfs(x+1,y,cnt2,cnt3+1);
  38. dfs(x,y+1,cnt2,cnt3+1);
  39. }
  40. else{
  41. cnt[x][y][cnt2][cnt3]=1;
  42. dfs(x+1,y,cnt2,cnt3);
  43. dfs(x,y+1,cnt2,cnt3);
  44. }
  45. }
  46.  
  47. int main()
  48. {
  49. ios_base::sync_with_stdio(false);
  50. ll i,j,k,l,m,x,y,r,t;
  51. cin>>n;
  52. for(i=1;i<=n;i++){
  53. for(j=1;j<=n;j++){
  54. cin>>a[i][j];
  55. }
  56. }
  57.  
  58. dfs(1,1,0,0);
  59.  
  60. cin>>m;
  61. while(m--){
  62. cin>>x>>y;
  63. if(cnt[n][n][x][y]==1){
  64. cout<<"YES"<<endl;
  65. }
  66. else{
  67. cout<<"NO"<<endl;
  68. }
  69. }
  70. return 0;
  71. }
Runtime error #stdin #stdout 0s 13472KB
stdin
Standard input is empty
stdout
Standard output is empty