#include using namespace std; class Point { public: Point(){x = -1;y=-1;distsofar = 0;} int x; int y; int distsofar ; string dir; }; bool flags[201][201] = {false,false}; bool pointequals(Point a, Point b) { return a.x == b.x && a.y == b.y; } Point LR(int n , Point p) { Point ret ; if(p.x+2 < n && p.y+1 < n) { ret.x = p.x+2; ret.y = p.y+1; ret.distsofar = p.distsofar+1; ret.dir = p.dir+"LR "; } return ret; } Point UR(int n , Point p) { Point ret ; if(p.x-2 > -1 && p.y+1 < n) { ret.x = p.x-2; ret.y = p.y+1; ret.distsofar = p.distsofar+1; ret.dir = p.dir+"UR "; } return ret; } Point LL(int n , Point p) { Point ret; if(p.x+2 < n && p.y-1 > 0) { ret.x = p.x+2; ret.y = p.y-1; ret.distsofar = p.distsofar+1; ret.dir = p.dir+"LL "; } return ret; } Point UL(int n , Point p) { Point ret; if(p.x-2 > -1 && p.y-1 > -1) { ret.x = p.x-2; ret.y = p.y-1; ret.distsofar = p.distsofar+1; ret.dir = p.dir+"UL "; } return ret; } Point L(int n , Point p) { Point ret; if(p.y-2 > -1 ) { ret.x = p.x; ret.y = p.y-2; ret.distsofar = p.distsofar+1; ret.dir = p.dir+"L "; } return ret; } Point R(int n , Point p) { Point ret ; if(p.y+2 < n) { ret.x = p.x; ret.y = p.y+2; ret.distsofar = p.distsofar+1; ret.dir = p.dir+"R "; } return ret; } // UL, UR, R, LR, LL, L string run(int n, Point p ,Point q, int* moves) { std::queue myq; myq.push(p); while(!myq.empty()) { Point a = myq.front(); myq.pop(); // std::cout<"< 0 )std::cout<> n; int i_start; int j_start; int i_end; int j_end; cin >> i_start >> j_start >> i_end >> j_end; printShortestPath(n, i_start, j_start, i_end, j_end); return 0; }