Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 375 Accepted Submission(s): 126
Problem Description
There is a tree with n nodes,
each of which has a type of color represented by an integer, where the color of node i is ci.
The path between each two different nodes is unique, of which we define the value as the number of different colors appearing in it. Calculate the sum of values of all paths on the tree that has n(n−1)2 paths in total.
Input
The input contains multiple test cases.
For each test case, the first line contains one positive integers n, indicating the number of node. (2≤n≤200000) Next line contains n integers where the i-th integer represents ci, the color of node i. (1≤ci≤n) Each of the next n−1 lines contains two positive integers x,y (1≤x,y≤n,x≠y), meaning an edge between node x and node y. It is guaranteed that these edges form a tree.
Output
For each test case, output "Case #x: y"
in one line (without quotes), where x indicates
the case number starting from 1 and y denotes
the answer of corresponding case.
Sample Input
3
1 2 1
1 2
2 3
6
1 2 1 3 2 1
1 2
1 3
2 4
2 5
3 6
Sample Output
Case #1: 6
Case #2: 29 分析:考慮每種顏色對答案的貢獻,對於一種顏色我們考慮將其從圖中扣去,那麼只要計算剩下的每個連通快的大小就能算出這種 顏色對答案的貢獻了,這一步我們把同顏色的點按dfs排序後可以o(n)的遞歸做.
|
Hdu-6035 Colorful Tree(dfs)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.