[Mo's] Trên Cây
Xem dưới dạng PDF
Gửi bài giải
Điểm:
100
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