C1512 [Ynoi]2012-C

内存限制:256 MB 时间限制:8000 ms

题目描述

给你一棵 $n$ 个节点的树,每个点有个颜色,有 $m$ 次修改,每次修改需要输出树上所有路径的颜色数的和。

输入格式

第一行,输入两个整数 $n$ 和 $m$。

第二行,输入 $n$ 个整数 $c_1$、$c_2 \cdots c_n$$(1≤c_i≤n)$,其中 $c_i$ 为 $i$ 节点的初始颜色。

接下来 $n-1$ 行每行包括两个整数 $u,v(1≤u,v≤n)$,这表示 $u$ 与 $v$ 之间有一条边。

接着 $m$ 行每行包括两个整数 $u,x(1≤u,x≤n)$ 表示将节点 $u$ 的颜色修改为 $x$。

输出

输出 $m+1$ 行,每行一个数,为初始这个树上所有路径颜色数的和,以及每次修改后的这个值。

样例

样例输入 1

5 3 1 2 1 2 3 1 2 1 3 3 4 3 5 3 3 4 1 4 3

样例输出 1

47 51 49 45

样例输入 2

6 1 1 1 1 1 1 1 1 2 2 3 3 4 4 5 5 6 1 2

样例输出 2

36 46

提示

对于 $100\%$ 的数据,满足 $(2≤n≤400000,1≤m≤400000)$