cpp-039Đọc toàn bộ đề miễn phí

Tổ tiên chung gần nhất (LCA) trên cây bằng Binary Lifting

Hệ thống cây phân cấp bài giảng và chủ đề tại AI Empire Academy gồm N nút được đánh số từ 1 đến N, trong đó nút 1 là nút gốc (Root). Cây có N-1 cạnh nối giữa các nút.

C++Nâng cao45 phút

Tiến độ của tôi ở bài này

Điểm được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

treeslcabinary liftingdata structures

Kiến thức tiên quyết: tree representation, dfs, binary lifting.

Nội dung đề bài

Mục tiêu kiến thức

  • Hiểu định nghĩa Tổ tiên chung gần nhất (Lowest Common Ancestor - LCA) của 2 nút u và v trên cây có gốc.
  • Áp dụng kỹ thuật nhân đôi (Binary Lifting): Xây dựng bảng up[k][u] là tổ tiên thứ 2k của nút u.
  • Trả lời mỗi truy vấn LCA trong thời gian O(log N).

Mô tả bài toán

Hệ thống cây phân cấp bài giảng và chủ đề tại AI Empire Academy gồm N nút được đánh số từ 1 đến N, trong đó nút 1 là nút gốc (Root). Cây có N-1 cạnh nối giữa các nút.

Hệ thống cần xử lý Q truy vấn, mỗi truy vấn gồm hai nút u và v. Hãy tìm nút Tổ tiên chung gần nhất (LCA) của u và v.

Quy ước nộp bài

  • Chỉ cần viết một chương trình đọc stdin và in ra stdout. Bài này không yêu cầu viết hàm.
  • Không dùng cout để in lời nhắc trước khi đọc dữ liệu. Lời nhắc sẽ lọt vào stdout và làm bài sai.
  • Chỉ in đúng nội dung ở mục Output. Không in thêm nhãn, dòng trống hay ký tự thừa.
  • Output được so khớp từng ký tự, phân biệt chữ hoa/thường và dấu câu.

Input

  • Dòng 1: Gồm 2 số nguyên N và Q (1 ≤ N, Q ≤ 2 · 105).
  • N-1 dòng tiếp theo: Mỗi dòng gồm 2 số nguyên u, v (1 ≤ u, v ≤ N) mô tả một cạnh của cây.
  • Q dòng tiếp theo: Mỗi dòng gồm 2 số nguyên u, v (1 ≤ u, v ≤ N) đại diện cho một truy vấn tìm LCA.

Output

  • In ra Q dòng, mỗi dòng là số hiệu nút LCA tương ứng của mỗi truy vấn.

Ràng buộc

  • 1 ≤ N, Q ≤ 2 · 105.
  • Thời gian chạy: 1000ms.
  • Bộ nhớ tối đa: 256MB.

Ví dụ 1

Input

5 3
1 2
1 3
2 4
2 5
4 5
4 3
1 5

Output

2
1
1
*Giải thích:*
- LCA của 4 và 5 là nút 2 (cha trực tiếp của cả hai).
- LCA của 4 và 3 là nút 1.
- LCA của 1 và 5 là nút 1.
3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.