Points:
1500
Time limit:
1.0s
Memory limit:
256M
Input:
stdin
Output:
stdout
Cho một cái cây có \(n\) nút và ta định nghĩa \(1\) là nút gốc của cây.
Bây giờ ta có \(q\) truy vấn, mỗi truy vấn có dạng: \(l_{i}\) \(r_{i}\) (\(1 \leq l_{i} \leq r_{i} \leq n\)).
Yêu cầu: Ứng với mỗi truy vấn, ta in ra LCA của tất cả các nút từ nút \(l_{i}\) đến nút \(r_{i}\)
Input
-
Dòng thứ nhất chứa số n (\(2 \leq n \leq 300000\)) - Thể hiện số nút của cây
-
\(n−1\) dòng tiếp theo, mỗi dòng gồm \(2\) số nguyên \(x,y\) - Thể hiện cạnh nối giữa hai đỉnh \(x\) và \(y\)
-
Dòng tiếp theo, chứa số \(q\) (\(1 \leq q \leq 300000\)) - Thể hiện số lượng truy vấn
-
\(q\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(l_{i}\), \(r_{i}\) (\(1 \leq l_{i} \leq r_{i}\leq n\))
Output
- Ứng với mỗi truy vấn, in ra đáp án cần tìm.
Scoring
- Subtask \(1\) (\(40\%\) số điểm): \(2 \leq n,q \leq 20\).
- Subtask \(2\) (\(60\%\) số điểm): Không có ràng buộc gì thêm.
Example
Test 1
Input
5
1 4
2 5
3 5
2 4
2
2 4
1 3
Output
4
1
Comments