Cerința
Se dă o hartă de NxN care conține spații libere (notate cu '.') și spații ocupate (notate cu '#'). Să se răspundă la Q interogări de forma i1 j1 i2 j2, unde se dorește să se afle distanța minimă de la celula (i1, j1) la celula (i2, j2).
Formatul input-ului
N A[0][0] A[0][1] ... A[0][N-1] A[1][0] A[1][1] ... A[1][N-1] ... A[N-1][0] A[N-1][1] ... A[N-1][N-1] (N linii și N coloane, '.' sau '#', fără spații) Q i1[0] j1[0] i2[0] j2[0] i1[1] j1[1] i2[1] j2[1] ... i1[Q-1] j1[Q-1] i2[Q-1] j2[Q-1]
Formatul output-ului
ans[0] ans[1] ... ans[Q-1]
Restricții și precizări
- Se recomandă folosirea fastio
1 ≤ N ≤ 6901 ≤ Q ≤ 100.0000 ≤ i1, j1, i2, j2 < N- dacă nu există soluție, se va afișa
-1 - cel mult
1%(rotunjit în sus) din toate celulele sunt ocupate (cu excepția exemplului) - testele sunt generate random
Exemplu:
Intrare
5 #...# #.... #.#.. ..#.. ..#.. 5 3 0 3 3 2 1 2 3 0 4 2 4 3 4 2 1 0 1 2 3
Ieșire
7 4 -1 6 4
Explicație
Pentru prima întrebare, distanța de la celula (3, 0) la celula (3, 3) este 7. Un drum posibil este următorul: (3, 0), (3, 1), (2, 1), (1, 1), (1, 2), (1, 3), (2, 3), (3, 3)
#...#
#***.
#*#*.
1*#2.
..#..