trang chủ / bài tập / compqry2

Tổ tiên chung thấp nhất (LCA)

Đề bài

Mô tả

Một công ty có n nhân viên, đánh số từ 1 đến n. Nhân viên số 1 là tổng giám đốc. Mỗi nhân viên từ 2 đến n có đúng một người quản lý trực tiếp ei (với ei<i).

Trả lời q truy vấn: với mỗi truy vấn (a,b), hãy tìm người quản lý chung thấp nhất (LCA) của hai nhân viên ab — tức là người quản lý chung ở cấp cao nhất trong hệ thống mà vẫn là cấp trên của cả hai.

Dữ liệu vào

Dòng đầu chứa hai số nguyên nq.

Dòng thứ hai chứa n1 số nguyên e2,e3,,en: người quản lý trực tiếp của mỗi nhân viên.

  • q dòng tiếp theo, mỗi dòng chứa hai số nguyên ab.

Dữ liệu ra

Với mỗi truy vấn, in ra người quản lý chung thấp nhất của ab.

Ràng buộc

  • 1n,q2·105
  • 1eii1
  • 1a,bn

Ví dụ

Input Output Giải thích
5 3
1 1 3 3
4 5
2 5
1 4
3
1
1
LCA(4,5) = 3 (cả hai đều dưới nhân viên 3). LCA(2,5) = 1 (tổng giám đốc). LCA(1,4) = 1 (1 là tổ tiên của 4).
3 1
1 1
2 3
1 Cả 2 và 3 đều trực thuộc 1.

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