---
# System prepended metadata

title: afattree

---

Nguồn: Tự nghĩ.
Rating : 1900.

**Đề Bài**:

Nauw có một cây gồm $n$ đỉnh và $n-1$ cạnh. Độ đẹp của một cành cây $u, v$ là $h(u, v)$, với $h(u, v)$ là số lượng các trọng số cạnh xuất hiện nhiều hơn 1 lần trong đường đi từ $u$ -> $v$. Độ đẹp của cả cây sẽ bằng tổng độ đẹp của tất cả độ đẹp của các cành cây $h(u, v)$ với mọi $u, v(u < v)$. Hãy tính độ đẹp của cây.

**Input**:
* Dòng đầu chứa số nguyên dương $n$ ($1\le n \le 10^5$) thể hiện số lượng đỉnh.
* $n-1$ dòng tiếp theo mỗi dòng chứa ba số nguyên dương $u, v, w$ ($1\le u, v, w\le n$) thể hiện một cạnh của cây

**Output**:
* In ra một số nguyên dương duy nhất là kết quả của bài. 

**Lời Giải:**

Gọi $d(u, v)$ là số lượng cạnh trên đường đi từ $u$ đến $v$.

=> Độ đẹp của cây sẽ là $(d(u, v)-g(u, v))$ với mọi $u, v(u < v)$ và $g(u, v)$ là số lượng trọng số chỉ xuất hiện 1 lần.

Để tính tổng của các $g(u, v)$ ta có thể làm như sau:
Với mỗi số x là trọng số của cạnh bất kì ta sẽ dsu ghép nó với 2 thành phần liên thông khác không chứa x. Rồi từ đó ta làm như ý tưởng chia để tri với 2 thành phần liên thông như thế.
Khi ta ghép đc một cạnh x ta có thể tăng ans lên size1 * size2 là hai cái size của 2 thành phần liên thông ta ghép được.

Rồi ta chỉ cần xét mọi x và làm như đã nói.
Đpt: O($n.logn^2$) để có được độ phức tạp này ta cần sử dụng dsu rollback.

Còn để tính tổng của các d(u, v) ta có thể dp on tree hoặc nhiều cách khác.
Code: https://ideone.com/xOnqiM
Bài này code hơi khó với e, sai mong anh chị bỏ qua :(( 
