import java.util.LinkedList;
import java.util.Queue;


public class Cinco_restri {
	public static int[][] adyacentes = new int [25][8];
	public static int[][] distancia = new int [25][25];

	@SuppressWarnings({ "unchecked", "rawtypes" })
	public Cinco_restri ()
	{
		
        adyacentes[0][0] = -1;
        adyacentes[0][1] = -1;
        adyacentes[0][2] = -1;
        adyacentes[0][3] = -1;
        adyacentes[0][4] = 1;            
        adyacentes[0][5] = -1;
        adyacentes[0][6] = 5;
        adyacentes[0][7] = 6;

   		adyacentes[1][0] = -1;
        adyacentes[1][1] = -1;
        adyacentes[1][2] = -1;
        adyacentes[1][3] = 0;
        adyacentes[1][4] = 2;            
        adyacentes[1][5] = -1;
        adyacentes[1][6] = 6;
        adyacentes[1][7] = -1;
        
		adyacentes[2][0] = -1;
        adyacentes[2][1] = -1;
        adyacentes[2][2] = -1;
        adyacentes[2][3] = 1;
        adyacentes[2][4] = 3;            
        adyacentes[2][5] = 6;
        adyacentes[2][6] = 7;
        adyacentes[2][7] = 8;
        
        adyacentes[3][0] = -1;
        adyacentes[3][1] = -1;
        adyacentes[3][2] = -1;
        adyacentes[3][3] = 2;
        adyacentes[3][4] = 4;            
        adyacentes[3][5] = -1;
        adyacentes[3][6] = 8;
        adyacentes[3][7] = -1;
        
        adyacentes[4][0] = -1;
        adyacentes[4][1] = -1;
        adyacentes[4][2] = -1;
        adyacentes[4][3] = 3;
        adyacentes[4][4] = -1;            
        adyacentes[4][5] = 8;
        adyacentes[4][6] = 9;
        adyacentes[4][7] = -1;
        
        adyacentes[5][0] = -1;
        adyacentes[5][1] = 0;
        adyacentes[5][2] = -1;
        adyacentes[5][3] = -1;
        adyacentes[5][4] = 6;            
        adyacentes[5][5] = -1;
        adyacentes[5][6] = 10;
        adyacentes[5][7] = -1;
        
        adyacentes[6][0] = 0;
        adyacentes[6][1] = 1;
        adyacentes[6][2] = 2;
        adyacentes[6][3] = 5;
        adyacentes[6][4] = 7;            
        adyacentes[6][5] = 10;
        adyacentes[6][6] = 11;
        adyacentes[6][7] = 12;
        
        adyacentes[7][0] = -1;
        adyacentes[7][1] = 2;
        adyacentes[7][2] = -1;
        adyacentes[7][3] = 6;
        adyacentes[7][4] = 8;            
        adyacentes[7][5] = -1;
        adyacentes[7][6] = 12;
        adyacentes[7][7] = -1;
        
        adyacentes[8][0] = 2;
        adyacentes[8][1] = 3;
        adyacentes[8][2] = 4;
        adyacentes[8][3] = 7;
        adyacentes[8][4] = 9;            
        adyacentes[8][5] = 12;
        adyacentes[8][6] = 13;
        adyacentes[8][7] = 14;
        
        adyacentes[9][0] = -1;
        adyacentes[9][1] = 4;
        adyacentes[9][2] = -1;
        adyacentes[9][3] = 8;
        adyacentes[9][4] = -1;            
        adyacentes[9][5] = -1;
        adyacentes[9][6] = 14;
        adyacentes[9][7] = -1;
        
        adyacentes[10][0] = -1;
        adyacentes[10][1] = 5;
        adyacentes[10][2] = 6;
        adyacentes[10][3] = -1;
        adyacentes[10][4] = 11;            
        adyacentes[10][5] = -1;
        adyacentes[10][6] = 15;
        adyacentes[10][7] = 16;

   		adyacentes[11][0] = -1;
        adyacentes[11][1] = 6;
        adyacentes[11][2] = -1;
        adyacentes[11][3] = 10;
        adyacentes[11][4] = 12;            
        adyacentes[11][5] = -1;
        adyacentes[11][6] = 16;
        adyacentes[11][7] = -1;
        
		adyacentes[12][0] = 6;
        adyacentes[12][1] = 7;
        adyacentes[12][2] = 8;
        adyacentes[12][3] = 11;
        adyacentes[12][4] = 13;            
        adyacentes[12][5] = 16;
        adyacentes[12][6] = 17;
        adyacentes[12][7] = 18;
        
        adyacentes[13][0] = -1;
        adyacentes[13][1] = 8;
        adyacentes[13][2] = -1;
        adyacentes[13][3] = 12;
        adyacentes[13][4] = 14;            
        adyacentes[13][5] = -1;
        adyacentes[13][6] = 18;
        adyacentes[13][7] = -1;
        
        adyacentes[14][0] = 8;
        adyacentes[14][1] = 9;
        adyacentes[14][2] = -1;
        adyacentes[14][3] = 13;
        adyacentes[14][4] = -1;            
        adyacentes[14][5] = 18;
        adyacentes[14][6] = 19;
        adyacentes[14][7] = -1;
        
        adyacentes[15][0] = -1;
        adyacentes[15][1] = 10;
        adyacentes[15][2] = -1;
        adyacentes[15][3] = -1;
        adyacentes[15][4] = 16;            
        adyacentes[15][5] = -1;
        adyacentes[15][6] = 20;
        adyacentes[15][7] = -1;
        
        adyacentes[16][0] = 10;
        adyacentes[16][1] = 11;
        adyacentes[16][2] = 12;
        adyacentes[16][3] = 15;
        adyacentes[16][4] = 17;            
        adyacentes[16][5] = 20;
        adyacentes[16][6] = 21;
        adyacentes[16][7] = 22;
        
        adyacentes[17][0] = -1;
        adyacentes[17][1] = 12;
        adyacentes[17][2] = -1;
        adyacentes[17][3] = 16;
        adyacentes[17][4] = 18;            
        adyacentes[17][5] = -1;
        adyacentes[17][6] = 22;
        adyacentes[17][7] = -1;
        
        adyacentes[18][0] = 12;
        adyacentes[18][1] = 13;
        adyacentes[18][2] = 14;
        adyacentes[18][3] = 17;
        adyacentes[18][4] = 19;            
        adyacentes[18][5] = 22;
        adyacentes[18][6] = 23;
        adyacentes[18][7] = 24;
        
        adyacentes[19][0] = -1;
        adyacentes[19][1] = 14;
        adyacentes[19][2] = -1;
        adyacentes[19][3] = 18;
        adyacentes[19][4] = -1;            
        adyacentes[19][5] = -1;
        adyacentes[19][6] = 24;
        adyacentes[19][7] = -1;

        adyacentes[20][0] = -1;
        adyacentes[20][1] = 15;
        adyacentes[20][2] = 16;
        adyacentes[20][3] = -1;
        adyacentes[20][4] = 21;            
        adyacentes[20][5] = -1;
        adyacentes[20][6] = -1;
        adyacentes[20][7] = -1;

   		adyacentes[21][0] = -1;
        adyacentes[21][1] = 16;
        adyacentes[21][2] = -1;
        adyacentes[21][3] = 20;
        adyacentes[21][4] = 22;            
        adyacentes[21][5] = -1;
        adyacentes[21][6] = -1;
        adyacentes[21][7] = -1;
        
		adyacentes[22][0] = 16;
        adyacentes[22][1] = 17;
        adyacentes[22][2] = 18;
        adyacentes[22][3] = 21;
        adyacentes[22][4] = 23;            
        adyacentes[22][5] = -1;
        adyacentes[22][6] = -1;
        adyacentes[22][7] = -1;
        
        adyacentes[23][0] = -1;
        adyacentes[23][1] = 18;
        adyacentes[23][2] = -1;
        adyacentes[23][3] = 22;
        adyacentes[23][4] = 24;            
        adyacentes[23][5] = -1;
        adyacentes[23][6] = -1;
        adyacentes[23][7] = -1;
        
        adyacentes[24][0] = 18;
        adyacentes[24][1] = 19;
        adyacentes[24][2] = -1;
        adyacentes[24][3] = 23;
        adyacentes[24][4] = -1;            
        adyacentes[24][5] = -1;
        adyacentes[24][6] = -1;
        adyacentes[24][7] = -1;
        
       //para el tablero cuadrado de 5x5
        
        //Crea un vector distancia, con la distancia de cada casilla al resto de casillas.
        for (int casilla = 0; casilla < 25; casilla++)
        {
            
            int cont = 1;
            boolean[] comprobado = new boolean[25];
            Queue cola = new LinkedList();  
            Queue colaAux = new LinkedList();
            cola.add (casilla);            
            while (cola.size() != 0)
            {               
                comprobado[(Integer)cola.peek()] = true;

                for (int i = 0; i < 8; i++)
                {
                    if (Cinco_restri.adyacentes[(Integer)cola.peek()][i] != -1 && !comprobado[Cinco_restri.adyacentes[(Integer)cola.peek()][i]])
                    {
                        distancia[casilla][Cinco_restri.adyacentes[(Integer)cola.peek()][i]] = cont;
                        comprobado[Cinco_restri.adyacentes[(Integer) cola.peek()][i]] = true;
                        colaAux.add(Cinco_restri.adyacentes[(Integer) cola.peek()][i]);
                    }
                }
                cola.remove();

                if (cola.size() == 0)
                {
                    while (colaAux.size() != 0)
                    {
                        cola.add((Integer)colaAux.peek());
                        colaAux.remove();
                    }
                    cont++;
                }
            }
        }
        
        
	}
        
        

}
