Problem5678--小a的模拟军团

5678: 小a的模拟军团

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 256 MiB

Description

1202年伊始,小a觉得山羊模拟器,乞丐模拟器之类的都太低级了,所以想自己建立一个征战天下的军团模拟器。
军团模拟器是在一个城市数为 $N$ 的国家中运行的,每个城市都会通过一些道路和其他所有城市相连,道路总数为 $N−1$。 开始时,每个城市中都会有一个军队,每个军队有着自己的编号。
定义军团为相邻的同种编号军队的最大联通块,有些时候某种编号的军队会改变自己的编号,他想要知道这些时候整个国家有多少军团。
形式化的,我们会有 $Q$ 次操作,每次操作为以下形式。
一行两个正整数 $a,\ b$ 表示所有编号为 $a$ 的军队编号变成 $b$。

Input

第一行两个整数 $N,\ Q$
接下来一行 $N$ 个非负整数,表示初始时 $N$ 个城市上军队的编号是多少,如果为 $0$ 那么无军队。
接下来 $N−1$ 行每行两个正整数 $u,\ v$ 表示城市 $u$ 和城市 $v$ 之间有道路相连。
接下来 $Q$ 行,两个整数 $x,\ y$ 表示询问操作。

Output

对于每次询问,输出一行一个整数,表示询问过后的军团数。

Constraints

 保证 $1 \leq N,\ Q$,所有编号最大值 $ \leq 200000$。
保证输入数据合法。

Sample 1 Input

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

Sample 1 Output

4
1
初始时共有四个军团,分别为 $\{1,\ 2\}\ \{3\}\ \{4\}\ \{5\}$。
操作一使得 $3$ 号节点的编号由 $3$ 改为 $2$,此时仍有四个军团。
操作二使得 $4,\ 5$ 号节点的编号由 $2$ 改为 $1$,此时只有一个军团。

Sample 2 Input

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

Sample 2 Output

4
4
4
3
2
2

Source/Category

数据结构 2.51.并查集