trang chủ / đề bài / 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 a và b — 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 n và q.

Dòng thứ hai chứa n−1 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 a và b.

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 a và b.

Ràng buộc

  • 1≤n,q≤2·105
  • 1≤ei≤i−1
  • 1≤a,b≤n

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.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