Source code for submission s865

Go to diff to previous submission

grasshop.cpp

  1. #include <stdio.h>
  2. #include <queue>
  3. #include <vector>
  4. using namespace std;
  5. bool done=false;
  6. bool inboard(int i, int j,int x,int y){
  7. if(i>0 && i<=x && j>0 && j<=y)
  8. return true;
  9. else
  10. return false;
  11. }
  12. class uzol{
  13. public:
  14. int step;
  15. int x,y;
  16. };
  17.  
  18. int step(int x, int y,int step,queue<uzol> & fronta,vector<vector<int> > & board){
  19. if(board[x][y]==-2){
  20. printf("%d\n",step+1);
  21. done=true;
  22. return 0; //koniec
  23. }else if(board[x][y]==-1){
  24. board[x][y]=step+1;
  25. uzol r;
  26. r.x=x;
  27. r.y=y;
  28. r.step=step+1;
  29. fronta.push(r);
  30. } else{
  31.  
  32. }
  33.  
  34. return 1;
  35. }
  36.  
  37. int main(){
  38. int a,b,c,d,e,f;
  39. vector<vector<int> > board;
  40. board.resize(101);
  41. for(int i=0;i<101;i++)
  42. board[i].resize(101);
  43.  
  44.  
  45. while(scanf("%d %d %d %d %d %d",&a,&b,&c,&d,&e,&f)==6){
  46. done=false;
  47. queue<uzol> fronta;
  48. for(int i=0;i<=a;i++){
  49. for(int j=0;j<=b;j++){
  50. board[i][j]=-1;
  51. }
  52. }
  53. if(e==c && d==f){
  54. printf("0\n");
  55. continue;
  56. }
  57.  
  58. board[e][f]=-2;
  59. board[c][d]=0;
  60. uzol f;
  61. f.step=0;
  62. f.x=c;
  63. f.y=d;
  64. fronta.push(f);
  65. while(fronta.size()>0){
  66. uzol node=fronta.front();
  67. fronta.pop();
  68. if(inboard(node.x+2, node.y+1,a,b)){
  69. if(step(node.x+2, node.y+1,node.step,fronta,board)==0)break;
  70. }
  71. if(inboard(node.x+2, node.y-1,a,b)){
  72. if(step(node.x+2, node.y-1,node.step,fronta,board)==0)break;
  73. }
  74. if(inboard(node.x+1, node.y+2,a,b)){
  75. if(step(node.x+1, node.y+2,node.step,fronta,board)==0)break;
  76. }
  77. if(inboard(node.x+1, node.y-2,a,b)){
  78. if(step(node.x+1, node.y-2,node.step,fronta,board)==0)break;
  79. }
  80. if(inboard(node.x-2, node.y+1,a,b)){
  81. if(step(node.x-2, node.y+1,node.step,fronta,board)==0)break;
  82. }
  83. if(inboard(node.x-2, node.y-1,a,b)){
  84. if(step(node.x-2, node.y-1,node.step,fronta,board)==0)break;
  85. }
  86. if(inboard(node.x-1, node.y-2,a,b)){
  87. if(step(node.x-1, node.y-2,node.step,fronta,board)==0)break;
  88. }
  89. if(inboard(node.x-1, node.y+2,a,b)){
  90. if(step(node.x-1, node.y+2,node.step,fronta,board)==0)break;
  91. }
  92.  
  93.  
  94. }
  95. if(done==false)
  96. printf("impossible\n");
  97.  
  98. }
  99.  
  100. return 0;
  101. }
  102.  

Diff to submission s801

grasshop.cpp

--- c4.s801.cteam008.grasshop.cpp.0.grasshop.cpp
+++ c4.s865.cteam008.grasshop.cpp.0.grasshop.cpp
@@ -50,5 +50,10 @@
                                 board[i][j]=-1;
                         }
-                }       
+                }
+if(e==c && d==f){
+printf("0\n");
+        continue;
+}       
+
                 board[e][f]=-2;
                 board[c][d]=0;