Mê cung 2D

Đề bài

Mô tả

Một mê cung có dạng hình chữ nhật kích thước 2×n, chia thành các ô vuông đơn vị. Mỗi ô hoặc là ô trống, hoặc là ô có vật cản.

Trong một đơn vị thời gian, một người có thể di chuyển từ một ô trống sang một ô trống kề cạnh với nó.

Các ô ở hàng thứ nhất được đánh số từ 1 đến n theo thứ tự từ trái sang phải, các ô ở hàng thứ hai được đánh số từ n+1 đến 2n cũng theo thứ tự từ trái sang phải.

Cho m truy vấn, mỗi truy vấn gồm hai ô trống vu. Với mỗi truy vấn, hãy tìm thời gian ít nhất để đi từ ô v đến ô u, hoặc cho biết không thể đi được.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên nm: chiều rộng của mê cung và số truy vấn.
  • Hai dòng tiếp theo mô tả mê cung, mỗi dòng gồm n ký tự, mỗi ký tự là . (ô trống) hoặc X (vật cản).
  • m dòng tiếp theo, dòng thứ i chứa hai số nguyên viui mô tả truy vấn thứ i. Đảm bảo cả hai ô này đều là ô trống.

Dữ liệu ra

In ra m dòng. Dòng thứ i chứa độ dài đường đi ngắn nhất từ ô vi đến ô ui, hoặc 1 nếu không thể đi từ ô này tới ô kia.

Ràng buộc

  • 1n2·105
  • 1m2·105
  • 1vi,ui2n

Ví dụ

Input Output Giải thích
10 3
X...X..X..
..X...X..X
11 7
7 18
18 10
9
-1
3
Ô 11 là ô (hàng 2, cột 1), ô 7 là ô (hàng 1, cột 7). Đường đi ngắn nhất phải đổi hàng ba lần (tại các cột 2, 4, 6) nên tốn 6+3=9 bước. Với truy vấn thứ hai, cột 7 chỉ trống ở hàng 2 còn cột 8 chỉ trống ở hàng 1, hai cột này nằm kề nhau nên không thể chuyển hàng, đáp án là 1.
4 7
.X..
...X
5 1
1 3
7 7
1 4
6 1
4 7
5 7
1
4
0
5
2
2
2
Ô 1 và ô 5 nằm cùng cột 1 và đều trống nên cách nhau 1 bước. Đi từ ô 1 đến ô 3 phải vòng xuống hàng 2 vì ô (hàng 1, cột 2) có vật cản: 15673, tốn 4 bước. Truy vấn thứ ba có hai ô trùng nhau nên đáp án là 0.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0