Go to diff to previous submission
#include <stdio.h> #define NOT_VISITED 2000 using namespace std; int main(){ int W, H, SX, SY, EX, EY; int HX[8] = {1,1,-1,-1,2,2,-2,-2}; int HY[8] = {2,-2,2,-2,1,-1,1,-1}; while (scanf("%d %d %d %d %d %d", &W, &H, &SX, &SY, &EX, &EY) == 6){ int QP = 0; int QL = 1; int QX[10010]; int QY[10010];SX--;SY--;EX--;EY--; QX[0] = SX; QY[0] = SY; int field[102][102]; for(int i = 0; i < W; i++){ for(int j = 0; j < H; j++){ field[i][j] = NOT_VISITED; } } field[SX][SY] = 0; int can_finish = -1; while(QP < QL){ for(int i = 0; i < 8; i++){ int nx = QX[QP] + HX[i]; int ny = QY[QP] + HY[i]; if(nx >= 0 && ny >= 0 && nx < W && ny < H && field[nx][ny] == NOT_VISITED){ field[nx][ny] = field[QX[QP]][QY[QP]] +1; QX[QL] = nx; QY[QL] = ny; QL++; } } if(field[EX][EY] != NOT_VISITED){ can_finish = field[EX][EY]; break; } QP++; } if(can_finish > -1){ printf("%d\n", can_finish); }else{ printf("impossible\n"); } } return 0; }
--- c4.s703.cteam016.grasshop.cpp.0.grasshop.cpp +++ c4.s712.cteam016.grasshop.cpp.0.grasshop.cpp @@ -12,6 +12,6 @@ int QP = 0; int QL = 1; - int QX[1010]; - int QY[1010];SX--;SY--;EX--;EY--; + int QX[10010]; + int QY[10010];SX--;SY--;EX--;EY--; QX[0] = SX; QY[0] = SY; int field[102][102];