[Mo's] Trên Cây
Xem dưới dạng PDF
Gửi bài giải
Điểm:
140
Giới hạn thời gian:
2.0s
Giới hạn bộ nhớ:
256M
đầu vào:
stdin
Đầu ra:
stdout
Tác giả:
Kiểu bài tập
Tý có một mạng xã hội gồm \(N\) người dùng được kết nối với nhau tạo thành một cấu trúc cây (gốc tùy ý, \(N-1\) kết nối). Mỗi người dùng có một sở thích được biểu diễn bằng một số nguyên dương. Hệ thống muốn thực hiện Q truy vấn: trên đường đi duy nhất giữa hai người dùng U và \(V\), có bao nhiêu sở thích khác nhau?
Hãy viết chương trình xử lý nhanh các truy vấn trên cây.
Định dạng đầu vào
- Dòng đầu chứa hai số nguyên dương \(N\) và Q (\(1 \le N, Q \le 10^5\)).
- Dòng thứ hai chứa \(N\) số nguyên dương \(a_1, a_2, \dots, a_N\) — sở thích của người dùng thứ i (\(1 \le a_i \le 10^9\)). - N-\(1\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(u, v\) mô tả một kết nối giữa hai người dùng (\(1 \le u, v \le N\)).
- \(Q\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(U, V\) — truy vấn đường đi (\(1 \le U, V \le N\)).
Định dạng đầu ra
- In ra \(Q\) dòng, mỗi dòng là số sở thích khác nhau trên đường đi giữa U và \(V\).
Ví dụ
Input:
8 3
1 2 1 3 2 1 4 5
1 2
1 3
2 4
2 5
3 6
3 7
6 8
4 5
4 8
2 7
Output:
2
4
3
Subtask
| Subtask | Giới hạn | Điểm |
|---|---|---|
| 1 | \(N, Q \le 10^3\) | 20 |
| 2 | \(N \le 5 \cdot 10^4, Q \le 10^5\) | 30 |
| 3 | \(N, Q \le 10^5\) | 50 |
Nhận xét