Nguồn: Big-O
Trong chuyến nghỉ dưỡng tại Hawaii năm nay, các thành viên Big-Omega đã cùng nhau chơi một trò chơi như sau: Cho một đồ thị dạng cây gồm N đỉnh, N−1 cạnh và một cặp số nguyên (L,R). Các đỉnh được đánh số từ 1 đến N, trong đó đỉnh 1 là gốc của cây. Mỗi đỉnh i mang một giá trị vi. Với mỗi đỉnh u, gọi du là số lượng giá trị vi phân biệt nằm trong cây con gốc u (tính cả u).
Hãy tính countu là số lượng cặp đỉnh (x,y) (1≤x<y≤N) thỏa mãn cả hai điều kiện sau:
x và y nằm ở hai nhánh con khác nhau của u.Tèo là một thành viên mới của Big-Omega năm nay. Để gây ấn tượng với mọi người trong công ty và giành giải thưởng, Tèo quyết tâm giải bằng được câu đố hóc búa này. Mặc dù không biết gì về lập trình, Tèo vẫn rất tự tin vì có một người bạn thân là lập trình viên chuyên nghiệp có thể giải quyết mọi bài toán khó nhằn. Bạn hãy giúp Tèo giải bài toán này thật nhanh nhé!
Đầu vào:
N — số lượng đỉnh của cây (1≤N≤105).L và R (0≤L≤R≤N−1).N số nguyên dương v1,v2,…,vN — tương ứng là giá trị của các đỉnh (1≤vi≤109).u và v — mô tả một cạnh nối giữa hai đỉnh u và v trong cây (1≤u,v≤N,u=v).Đầu ra:
N số nguyên count1 count2 … countN cách nhau bởi dấu cách — đại diện cho kết quả tại từng đỉnh.Giải thích: Hình dưới đây minh họa cây trong ví dụ mẫu. Mỗi đỉnh được biểu diễn bởi hai thông số: chỉ số đỉnh / giá trị của đỉnh đó.

Theo hình minh họa, số lượng giá trị phân biệt trong cây con của mỗi đỉnh là:
Giá trị counti tương ứng của mỗi đỉnh i:
x, y nằm ở hai nhánh con khác nhau của đỉnh 1 và thỏa mãn 0≤∣dx−dy∣≤9.Ví dụ 1:
Đầu vào:
10
0 9
4 10 8 9 1 8 4 2 10 6
10 4
9 6
3 6
6 10
5 1
2 1
5 10
6 8
8 7
Đầu ra:
8 0 0 0 0 5 0 0 0 5