#include using namespace std; vector > > v; int arr[202][202];//visited is arr int check=0; pair > parent[202][202]; void printShortestPath(int n, int i_start, int j_start, int i_end, int j_end) { int i=i_start;//storing the starting values... int j=j_start; queue > q; q.push(make_pair(i_start,j_start)); while(!q.empty()){ pair current = q.front(); q.pop(); int i_start = current.first; int j_start = current.second; // if(arr[i_start][j_start]==0){ // arr[i_start][j_start]==1; if(i_start-2>=0 && j_start-1>=0 && arr[i_start-2][j_start-1]==0){ q.push(make_pair(i_start-2,j_start-1)); parent[i_start-2][j_start-1].first="UL"; arr[i_start-2][j_start-1]=1; parent[i_start-2][j_start-1].second=make_pair(i_start,j_start); if(i_start-2==i_end && j_start==j_end){ check=1; break; } } if(i_start-2>=0 && j_start+1=0 && arr[i_start+2][j_start-1]==0){ q.push(make_pair(i_start+2,j_start-1)); parent[i_start+2][j_start-1].first="LL"; arr[i_start+2][j_start-1]=1; parent[i_start+2][j_start-1].second=make_pair(i_start,j_start); if(i_start+2==i_end && j_start-1==j_end){ check=1; break; } } if( j_start-2>=0 && arr[i_start][j_start-2]==0){ q.push(make_pair(i_start,j_start-2)); parent[i_start][j_start-2].first="L"; arr[i_start][j_start-2]=1; parent[i_start][j_start-2].second=make_pair(i_start,j_start); if(i_start==i_end && j_start-2==j_end){ check=1; break; } } // } } vector ans; if(check==1){ int x=i_end,y=j_end; while(x!=i || y!=j){ ans.push_back(parent[x][y].first); pair temp = parent[x][y].second; x=temp.first; y=temp.second; } int ll=ans.size(); cout<=0;z--){ cout<> n; for(int i=0;i> i_start >> j_start >> i_end >> j_end; vector path; int count=0; printShortestPath(n, i_start, j_start, i_end, j_end); return 0; }