Source code for submission s975

Go to diff to previous submission

grasshop.cpp

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <queue>
  4. #include <set>
  5.  
  6.  
  7. struct XPoint{
  8. int x;
  9. int y;
  10. int delka;
  11.  
  12. XPoint(int i, int j, int k){
  13. x = i;
  14. y = j;
  15. delka = k;
  16. }
  17. };
  18.  
  19.  
  20. int main(){
  21.  
  22. int rows, cols, gregrow, gregcol, leafrow, leafcol;
  23. bool skok;
  24. int delka;
  25.  
  26. bool mapa[101][101];
  27.  
  28. while(scanf("%d%d%d%d%d%d",&rows,&cols,&gregrow, &gregcol, &leafrow,&leafcol)==6){
  29. std::queue<XPoint> fronta;
  30. skok = false;
  31. for(int i = 1; i <= rows; i++)
  32. for(int j = 1; j <= cols; j++)
  33. mapa[i][j] = false;
  34.  
  35. fronta.push(XPoint(gregrow,gregcol,0));
  36. mapa[gregrow][gregcol] = true;
  37.  
  38.  
  39. while(!fronta.empty()){
  40. XPoint t = fronta.front();
  41. fronta.pop();
  42.  
  43. delka = t.delka +1;
  44.  
  45. int x = t.x - 1;
  46. int y = t.y - 2;
  47. if(x == leafrow && y == leafcol) {skok = true;break;}
  48. if(!mapa[x][y] && x >= 1 && x <= rows && y >= 1 && y <= cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
  49.  
  50. x = t.x + 1;
  51. y = t.y - 2;
  52. if(x == leafrow && y == leafcol) {skok = true;break;}
  53. if(!mapa[x][y] && x >= 1 && x <= rows && y >= 1 && y <= cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
  54.  
  55. x = t.x -2;
  56. y = t.y +1;
  57. if(x == leafrow && y == leafcol) {skok = true;break;}
  58. if(!mapa[x][y] && x >= 1 && x <= rows && y >= 1 && y <= cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
  59.  
  60. x = t.x -2;
  61. y = t.y -1;
  62. if(x == leafrow && y == leafcol) {skok = true;break;}
  63. if(!mapa[x][y] && x >= 1 && x <= rows && y >= 1 && y <= cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
  64.  
  65. x = t.x +2;
  66. y = t.y +1;
  67. if(x == leafrow && y == leafcol) {skok = true;break;}
  68. if(!mapa[x][y] && x >= 1 && x <= rows && y >= 1 && y <= cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
  69.  
  70. x = t.x +2;
  71. y = t.y -1;
  72. if(x == leafrow && y == leafcol) {skok = true;break;}
  73. if(!mapa[x][y] && x >= 1 && x <= rows && y >= 1 && y <= cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
  74.  
  75. x = t.x +1;
  76. y = t.y +2;
  77. if(x == leafrow && y == leafcol) {skok = true;break;}
  78. if(!mapa[x][y] && x >= 1 && x <= rows && y >= 1 && y <= cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
  79.  
  80. x = t.x -1;
  81. y = t.y + 2;
  82. if(x == leafrow && y == leafcol) {skok = true;break;}
  83. if(!mapa[x][y] && x >= 1 && x <= rows && y >= 1 && y <= cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
  84. }
  85.  
  86. if(skok) printf("%d\n",delka);
  87. else printf("impossible\n");
  88.  
  89. }
  90.  
  91. return 0;
  92. }
  93.  

Diff to submission s959

grasshop.cpp

--- c4.s959.cteam033.grasshop.cpp.0.grasshop.cpp
+++ c4.s975.cteam033.grasshop.cpp.0.grasshop.cpp
@@ -24,11 +24,11 @@
     int delka;
     
-    bool mapa[100][100];
+    bool mapa[101][101];
     
     while(scanf("%d%d%d%d%d%d",&rows,&cols,&gregrow, &gregcol, &leafrow,&leafcol)==6){
                 std::queue<XPoint> fronta;
                 skok = false;
-                for(int i = 0; i < rows; i++)
-                        for(int j = 0; j < cols; j++)
+                for(int i = 1; i <= rows; i++)
+                        for(int j = 1; j <= cols; j++)
                                 mapa[i][j] = false;
                 
@@ -46,40 +46,40 @@
                         int y = t.y - 2;
                         if(x == leafrow && y == leafcol) {skok = true;break;}
-                        if(!mapa[x][y] && x >= 0 && x < rows && y >= 0 && y < cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
+                        if(!mapa[x][y] && x >= 1 && x <= rows && y >= 1 && y <= cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
                         
                         x = t.x + 1;
                         y = t.y - 2;
                         if(x == leafrow && y == leafcol) {skok = true;break;}
-                        if(!mapa[x][y] && x >= 0 && x < rows && y >= 0 && y < cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
+                        if(!mapa[x][y] && x >= 1 && x <= rows && y >= 1 && y <= cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
                         
                         x = t.x -2;
                         y = t.y +1;
                         if(x == leafrow && y == leafcol) {skok = true;break;}
-                        if(!mapa[x][y] && x >= 0 && x < rows && y >= 0 && y < cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
+                        if(!mapa[x][y] && x >= 1 && x <= rows && y >= 1 && y <= cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
                         
                         x = t.x -2;
                         y = t.y -1;
                         if(x == leafrow && y == leafcol) {skok = true;break;}
-                        if(!mapa[x][y] && x >= 0 && x < rows && y >= 0 && y < cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
+                        if(!mapa[x][y] && x >= 1 && x <= rows && y >= 1 && y <= cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
                         
                         x = t.x +2;
                         y = t.y +1;
                         if(x == leafrow && y == leafcol) {skok = true;break;}
-                        if(!mapa[x][y] && x >= 0 && x < rows && y >= 0 && y < cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
+                        if(!mapa[x][y] && x >= 1 && x <= rows && y >= 1 && y <= cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
                         
                         x = t.x +2;
                         y = t.y -1;
                         if(x == leafrow && y == leafcol) {skok = true;break;}
-                        if(!mapa[x][y] && x >= 0 && x < rows && y >= 0 && y < cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
+                        if(!mapa[x][y] && x >= 1 && x <= rows && y >= 1 && y <= cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
                         
                         x = t.x +1;
                         y = t.y +2;
                         if(x == leafrow && y == leafcol) {skok = true;break;}
-                        if(!mapa[x][y] && x >= 0 && x < rows && y >= 0 && y < cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
+                        if(!mapa[x][y] && x >= 1 && x <= rows && y >= 1 && y <= cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
                         
                         x = t.x -1;
                         y = t.y + 2;
                         if(x == leafrow && y == leafcol) {skok = true;break;}
-                        if(!mapa[x][y] && x >= 0 && x < rows && y >= 0 && y < cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
+                        if(!mapa[x][y] && x >= 1 && x <= rows && y >= 1 && y <= cols) {fronta.push(XPoint(x,y,t.delka +1));mapa[x][y] = true;}
                 }