Mihai a primit de ziua sa un joc de şah special. Tabla jocului are forma pătrată, de dimensiune dar unele poziţii sunt marcate ca obstacole şi ele nu pot fi ocupate cu piese. În plus, jocul său are o singură piesă, numită “nebun”. Două poziţii pe tablă sunt desemnate ca poziţie iniţială şi poziţie finală. Mihai vrea să determine o modalitate de a deplasa nebunul, cu un număr minim de mutări, astfel încât acesta să ajungă din poziţia iniţială în poziţia finală. Mihai va respecta regulile de mutare a nebunului la jocul de şah, adică din poziţia curentă nebunul se poate muta doar pe diagonală, în oricare dintre cele direcţii, oricâte poziţii deodată dar fără a sări peste obstacole. În plus, Mihai are voie la o excepţie de la această regulă: îi este permis să execute cel mult două mutări după regula de avansare a calului pe tabla de şah.
Pentru clarificare, în figura următoare, poziţia calului este marcată cu . El va putea fi mutat în oricare dintre poziţiile marcate cu . La o mutare după regula calului, nu contează starea poziţiilor peste care se sare, ci doar ca poziţia finală să nu reprezinte un obstacol.
Tabla de şah are liniile numerotate de sus în jos cu numere naturale cuprinse între şi iar coloanele de la stânga la dreapta cu numere naturale cuprinse între şi . O poziţie de pe tablă se identifică printr-o pereche unde reprezintă linia iar coloana acelei poziţii.
Cerinţa
Dată fiind configuraţia tablei de şah precum şi poziţiile iniţială şi finală ale piesei, se cere determinarea numărului minim de mutări pentru a deplasa piesa între cele două poziţii.
Date de intrare
Fişierul sah.in
conţine pe prima linie numerele separate prin câte un spaţiu, reprezentând: – dimensiunea tablei; – poziţia iniţială a piesei; – poziţia finală a piesei. Pe următoarele linii se găsesc câte numere din mulţimea . Valoarea reprezintă o poziţie marcată pe tablă ca obstacol iar valoarea o poziţie liberă. Numerele de pe aceeaşi linie nu sunt separate prin spaţii.
Date de ieșire
Fişierul sah.out
conţine pe prima linie un număr natural reprezentând numărul minim de mutări necesare.
Restricții și precizări
- ;
- Piesa nu poate părăsi tabla de joc;
- Se garantează că poziţia iniţială şi cea finală nu sunt marcate ca obstacole;
- Se garantează existenţa a cel puţin unei posibilităţi de mutare a piesei între poziţia iniţială şi cea finală;
- Se recomandă citirea datelor din fişier linie cu linie şi nu caracter cu caracter;
Exemplu
sah.in
4 1 1 4 1
0100
1000
0010
0000
sah.out
2
Explicație
Nebunul pleacă din foloseste săritura calului până în poziţia , apoi din acea poziţie, folosind mişcarea pe diagonală sare până în poziţia finală . O altă soluţie se poate obţine efectuând mutările: ;