trang chủ / đề bài / okabecity

Thành phố của Okabe

Đề bài

Mô tả

Thành phố được mô tả bởi một lưới n×m ô. Các hàng được đánh số từ 1 đến n từ trên xuống dưới, các cột được đánh số từ 1 đến m từ trái sang phải. Trong thành phố có đúng k ô được chiếu sáng sẵn bởi đèn đường, trong đó chắc chắn có ô góc trên bên trái (1,1).

Okabe xuất phát từ ô (1,1) và muốn tới ô (n,m). Anh chỉ đi được trên những ô đang sáng, và mỗi bước chỉ di chuyển sang ô kề cạnh theo bốn hướng lên, xuống, trái, phải.

Ngoài ra, Okabe có thể trả 1 đồng xu để thắp sáng tạm thời toàn bộ một hàng hoặc toàn bộ một cột tuỳ chọn, nhờ đó đi qua được cả những ô vốn không sáng. Tại mỗi thời điểm chỉ có nhiều nhất một hàng hoặc một cột được thắp sáng tạm thời. Muốn đổi sang hàng/cột khác, Okabe phải đang đứng trên một ô được chiếu sáng sẵn và trả thêm 1 đồng xu. Ngay khi đổi, hàng/cột tạm thời cũ tắt trở lại: mọi ô trong đó không được chiếu sáng sẵn sẽ tối lại như cũ.

Hãy tìm số đồng xu ít nhất Okabe cần trả để đi từ (1,1) tới (n,m).

Dữ liệu vào

  • Dòng đầu chứa ba số nguyên n, m, k.
  • k dòng tiếp theo, dòng thứ i chứa hai số nguyên ri và ci là hàng và cột của ô được chiếu sáng sẵn thứ i.

Các ô được chiếu sáng sẵn đôi một phân biệt, và ô (1,1) chắc chắn nằm trong số đó. Lưu ý ô đích (n,m) có thể không được chiếu sáng sẵn.

Dữ liệu ra

In ra một số nguyên duy nhất là số đồng xu ít nhất Okabe cần trả, hoặc −1 nếu không thể tới được ô (n,m).

Ràng buộc

  • 2≤n,m,k≤104
  • 1≤ri≤n, 1≤ci≤m

Ví dụ

Input Output Giải thích
4 4 5
1 1
2 1
2 3
3 3
4 3
2 Từ (1,1) đi xuống (2,1) miễn phí. Trả 1 xu thắp sáng hàng 2 để đi tới (2,3), rồi xuống (3,3) và (4,3) miễn phí. Trả thêm 1 xu thắp sáng hàng 4 để đi tới (4,4).
5 5 4
1 1
2 1
3 1
3 2
-1 Mọi ô sáng sẵn đều nằm ở hàng ≤3 và cột ≤2. Muốn đứng ở (5,5) thì phải thắp sáng hàng 5 hoặc cột 5, nhưng để làm vậy Okabe cần đứng ở một ô sáng sẵn thuộc hàng 4 hoặc 5 (hoặc cột 4 hoặc 5) mà không có ô nào như thế.
2 2 4
1 1
1 2
2 1
2 2
0 Cả bốn ô đều sáng sẵn nên đi thẳng tới (2,2) mà không tốn xu nào.
5 5 4
1 1
2 2
3 3
4 4
3 Ví dụ này cho thấy một xu có thể vượt hai hàng: đứng ở (1,1) trả 1 xu thắp sáng cột 2, đi xuống ô (2,2) sáng sẵn. Tương tự 1 xu nữa để tới (4,4), rồi 1 xu cuối thắp sáng hàng 5 để đi tới (5,5).

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0