#include #include #include #include #include #include #include void printShortestPath(int n, int i_start, int j_start, int i_end, int j_end) { int val,val2,i,j,a[1000]; if((i_start%2==0&&(i_end%2==1))||((i_start%2==1)&&(i_end%2==0))) { printf("Impossible "); exit (1); } else { val=i_start-i_end; val=val/2; if(val%2==0)//same row features { if((j_start%2==0&&(j_end%2==1))||((j_start%2==1)&&(j_end%2==0))) { printf("Impossible"); exit (1); } } else { if((j_start%2==0&&(j_end%2==0))||((j_start%2==1)&&(j_end%2==1))) { printf("Impossible 3"); exit (1); } } } int count=0; for(i=i_start,j=j_start;i!=i_end||j!=j_end;count++) { if(ij_end) { a[count]=1; j=j-1; } else { a[count]=2; j=j+1; } } else if(i>i_end) { i=i-2; if(j>j_end) { a[count]=3; j=j-1; } else { a[count]=4; j=j+1; } } else { if(j>j_end) { j=j-2; a[count]=5; } else { j=j+2; a[count]=6; } } } printf("%d\n",count); for(i=0;i