Kon.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package kon;
import java.awt.Point;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
/**
*
* @author student
*/
public class Kon {
private static boolean[][] map;
private static int sx, sy, rx, ry, ex, ey;
private static Queue<Point> st;
private static int sol;
public static void main
(String[] args
) { Scanner sc
= new Scanner
(System.
in);
int[][] podm = {{1,2},{2,1},{2, -1},{1,-2}, {-1,-2}, {-2,-1},{-2,1},{-1,2}};
while(sc.hasNextInt())
{
rx = sc.nextInt();
ry = sc.nextInt();
sx = sc.nextInt();
sy = sc.nextInt();
ex = sc.nextInt();
ey = sc.nextInt();
st = new LinkedList<Point>();
map = new boolean[rx+1][ry+1];
sol = 1;
map[sx][sy] = true;
st.
offer(new Point(sx, sy
)); st.offer(null);
while(true)
{
if(st.size() == 1)
{
System.
out.
println("impossible"); break;
}
//System.out.println(st.size());
if(p == null)
{
st.add(null);
sol++;
continue;
}
int x, y;
boolean mimo = false;
for(int j=0; j<8; j++)
{
x = p.x + podm[j][0];
y = p.y + podm[j][1];
if(0 < x && x <= rx && 0 < y && y <= ry)
{
mimo = solve(x, y);
if(mimo) break;
}
}
if(mimo) break;
/*if(p.x-2 > 0)
{
if(p.y+1 <= ry)
{
if(solve(p.x-2, p.y+1))
break;
}
else if(p.y-1 > 0)
{
if(solve(p.x-2, p.y-1))
break;
}
}
//atd
if(p.x+1 <= rx)
{
if(p.y+2 <= ry)
{
if(solve(p.x+1, p.y+2))
break;
}
else if(p.y-2 > 0)
{
if(solve(p.x+1, p.y-2))
break;
}
}
if(p.x+2 <= rx)
{
if(p.y+1 <= ry)
{
if(solve(p.x+2, p.y+1))
break;
}
else if(p.y-1 > 0)
{
if(solve(p.x+2, p.y-1))
break;
}
}
//ds
if(p.y-1 > 0)
{
if(p.x+2 <= rx)
{
if(solve(p.x+2, p.y-1))
break;
}
else if(p.x-2 > 0)
{
if(solve(p.x-2, p.y-1))
break;
}
}
if(p.y-2 > 0)
{
if(p.x+1 <= rx)
{
if(solve(p.x+1, p.y-2))
break;
}
else if(p.x-1 > 0)
{
if(solve(p.x-1, p.y-2))
break;
}
}
//
if(p.y+1 <= ry)
{
if(p.x+2 <= rx)
{
if(solve(p.x+2, p.y+1))
break;
}
else if(p.x-2 > 0)
{
if(solve(p.x-2, p.y+1))
break;
}
}
if(p.y+2 <= ry)
{
if(p.x+1 <= rx)
{
if(solve(p.x+1, p.y+2))
break;
}
else if(p.x-1 > 0)
{
if(solve(p.x-1, p.y+2))
break;
}
}*/
}
}
}
private static boolean solve(int x, int y)
{
if(!map[x][y])
{
if(x == ex && y == ey)
{
return true;
}
else
{
st.
offer(new Point(x, y
)); map[x][y] = true;
}
}
return false;
}
}