GRID6
Cho một bảng có kích thước \(n×m\), mỗi ô trên bảng chứa ký tự \(o\) (ô tự do) hoặc ký tự \(*\) (ô cấm).
Cho hai số nguyên \(x, y\) với ô \((x,y)\) là ô xuất phát.
Có \(q\) truy vấn, mỗi truy vấn gồm 2 số nguyên \((u,v)\) bạn cần di chuyển từ ô xuất phát đến ô \((u,v)\) qua ít nhất bao nhiêu bước. Mỗi bước di chuyển từ ô \((i,j)\) có thể di chuyển sang 4 ô \((i-1,j)\), \((i+1,j)\), \((i,j-1)\), \((i,j+1)\). Không được đi ra ngoài bảng và không đi vào ô cấm.
Input
Dòng đầu gồm 3 số nguyên dương \(m,n,q (m,n≤10^3,1≤q≤10^5) \).
\(n\) dòng tiếp theo, dòng thứ i chứa một xâu độ dài \(m\) gồm hai loại ký tự \(o\) hoặc \(*\) mô tả dòng thứ \(i\) của ma trận.
Dòng tiếp theo chứa hai số nguyên \(x,y (1≤x,≤n;1≤y≤m).\)
\(q\) dòng tiếp theo mỗi dòng chứa hai số nguyên \(u,v (1≤u≤n;1≤v≤m)\) mô tả một truy vấn.
Output
- Gồm \(q\) dòng, mỗi dòng chứa một số nguyên là số bước tối thiểu để đi từ ô \((x,y)\) tới ô \((u,v)\), nếu không có đường đi ghi \(-1\).
Sample Input
3 3 2
o*o
ooo
*oo
2 2
1 1
Sample Output
2
-1
Comments