Hành trình bay II
Xem dạng PDFMô tả bài toán: Tìm số lần dịch chuyển tối thiểu giữa các hành tinh
Bạn đang chơi một trò chơi với n hành tinh. Mỗi hành tinh có một thiết bị dịch chuyển tức thời dẫn đến một hành tinh khác (hoặc chính hành tinh đó).
Nhiệm vụ của bạn là xử lý q truy vấn, mỗi truy vấn có dạng: bạn bắt đầu từ hành tinh ~a~ và muốn đến hành tinh ~b~. Hãy tìm số lần dịch chuyển tối thiểu cần thiết. Nếu không thể đến hành tinh ~b~ từ ~a~, in ra ~-1~.
Input:
- Dòng đầu tiên chứa hai số nguyên n và q: số lượng hành tinh và số lượng truy vấn.
- Dòng thứ hai chứa n số nguyên ~t_1, t_2, \dots, t_n~: với mỗi hành tinh ~i~, thiết bị dịch chuyển sẽ dẫn đến hành tinh ~t_i~.
- Sau đó, có q dòng, mỗi dòng chứa hai số nguyên ~a~ và ~b~: bạn bắt đầu từ hành tinh ~a~ và muốn đến hành tinh ~b~.
Output:
- In ra kết quả cho mỗi truy vấn:
- Số lần dịch chuyển tối thiểu để đến được ~b~ từ ~a~, hoặc ~-1~ nếu không thể đến được.
Ràng buộc:
- ~1 \leq n, q \leq 2 \cdot 10^5~
- ~1 \leq a, b \leq n~
Ví dụ :
Input:
5 3
2 3 2 3 2
1 2
1 3
1 4
Output:
1
2
-1
Giải thích:
- Truy vấn 1: Từ hành tinh ~1 \to 2~, mất 1 bước.
- Truy vấn 2: Từ hành tinh ~1 \to 2 \to 3~, mất 2 bước.
- Truy vấn 3: Không thể đến hành tinh ~4~ từ ~1~, kết quả là ~-1~.
Bình luận
Gửi bài giải
Kotlin
PyPy
Điểm:
10,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Nguồn bài:
CSES
Dạng bài
CSES
Ngôn ngữ cho phép
C
C++
Java
Pascal
Python
Scratch