NÚT CHA CHUNG GẦN NHẤT (ANCES.*)

View as PDF

Submit solution

Points: 100.00 (partial)
Time limit: 1.0s
Memory limit: 1G
Input: stdin
Output: stdout

Author:
Problem types

Cấu trúc cây: Cây là một cấu trúc dữ liệu quen thuộc trong tin học. Ví dụ ta có cây với 16 nút như hình bên dưới.

Các nút được đánh số từ 1 đến 16. Nút 8 là gốc. Nút ~x~ được gọi là nút cha của ~y~, nếu tồn tại một đường dẫn từ gốc tới ~y~ đi qua ~x~. Ví dụ, nút 4 là nút cha của nút 16, nút 10 cũng là nút cha của 16. Một nút đồng thời là nút cha của chính mình. Như vậy, các nút 8, 4, 10 và 16 là nút cha của 16.

Nút ~x~ được gọi là nút cha chung của hai nút khác nhau ~y~ và ~z~, nếu nó vừa là nút cha của ~y~, vừa là nút cha của ~z~. Ví dụ, các nút 8 và 4 đều là nút cha chung của các nút 7 và 16.

Nút ~x~ được gọi là nút cha chung gần nhất của ~y~ và ~z~, nếu nó là nút cha chung của hai nút này và trên đường dẫn từ ~x~ tới ~y~ không còn nút cha chung nào khác của ~y~ và ~z~. Trong cây đang xét, 4 là nút cha chung gần nhất của 7 và 16.

Yêu cầu: Hãy lập trình tìm nút cha chung gần nhất của hai nút khác nhau trong một cây có ~N~ nút. Các nút được đánh số từ ~1~ tới ~N~.

Input: ANCES.INP
  • Dòng đầu tiên chứa hai số nguyên ~N~, ~K~ – trong đó ~N~ là số nút của cây ~(2 \leq N \leq 10\,000)~, ~K~ là nút gốc.
  • ~N-1~ dòng tiếp theo, mỗi dòng chứa hai số nguyên – hai nút liên tiếp của cây.
  • Dòng cuối cùng chứa hai số nguyên khác nhau – hai nút cần tìm nút cha chung gần nhất.
Output: ANCES.OUT
  • Một số nguyên – nút cha chung gần nhất.
Ví dụ:
16 8
1 14
8 5
10 16
5 9
4 6
8 4
4 10
1 13
6 15
10 11
6 7
10 2
16 3
8 1
16 12
16 7

Output:

4

Comments

Please read the guidelines before commenting.


There are no comments at the moment.