Số Bước Để Đến V

Xem dưới dạng PDF

Gửi bài giải


Điểm: 20
Giới hạn thời gian: 1.5s
Giới hạn bộ nhớ: 256M
đầu vào: stdin
Đầu ra: stdout

Tác giả:
Kiểu bài tập

Cho đồ thị hàm số gồm \(N\) đỉnh được đánh số từ 0 đến \(N-1\). Mỗi đỉnh i có đúng một cung đi ra hướng tới \(next[i]\).

Bạn cần xử lý \(Q\) truy vấn: Cho hai đỉnh U và V, tìm số bước đi ít nhất để đi từ U tới V. Nếu V không thể đi tới được từ \(U\), in ra -1.

Định dạng đầu vào

  • Dòng đầu chứa hai số nguyên dương \(N\) và Q (\(1 \le N, Q \le 10^5\)).
  • Dòng hai chứa \(N\) số nguyên đại diện cho mảng next (\(0 \le next[i] < N\)).
  • \(Q\) dòng tiếp theo, mỗi dòng chứa hai số nguyên U và V (\(0 \le U, V < N\)).

Định dạng đầu ra

  • Với mỗi truy vấn, in ra số bước đi ít nhất hoặc -1 trên một dòng.

Ví dụ

Input:

6 4
1 2 3 1 5 4
0 3
3 0
4 5
5 0

Output:

3
-1
1
-1

Giải thích:

  • Cung đồ thị: \(0 \to 1 \to 2 \to 3 \to 1\) và \(4 \to 5 \to 4\).
  • Truy vấn 1 (\(0 \to 3\)): Đi qua \(0 \to 1 \to 2 \to 3\) (3 bước).
  • Truy vấn 2 (\(3 \to 0\)): Không thể đi ngược từ chu kỳ về 0 \(\to\) -1.
  • Truy vấn 3 (\(4 \to 5\)): Đi qua \(4 \to 5\) (1 bước).
  • Truy vấn 4 (\(5 \to 0\)): Hai đỉnh nằm ở hai thành phần liên thông khác nhau \(\to\) -1.

Ràng buộc & Subtasks

  • **Subtask 1 (30% số điểm):\(Q \le 1000\).
  • **Subtask 2 (70% số điểm):\(Q \le 10^{5}\).

Nhận xét

Không có ý kiến tại thời điểm này.