C. 树

内存限制:256 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较

题目描述

给定一颗N个节点的有根树,节点编号为1,2,3,...,n, 1号节点是根,每个节点上都有一个集合S。

你需要进行Q次操作,每次操作表示为两个正整数u x, 表示在u及其子树内所有结点的集合都插入数x。

操作完成后,令f(y)表示节点上的集合包含y的节点个数,你需要对所有正整数的f(y)求和并输出。

输入格式

第一行两个正整数N,Q。

接下来N-1行,每行两个正整数, 表示树的一条边。

接下来Q行,每行两个正整数u,x表示一个操作。

输出格式

输出一行一个整数表示所有f(y)的和。

样例

输入样例1:

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

输出样例1:

8

数据范围与提示

对于所有数据,有 1<=N,Q<=10^5, 1<=x<=100 ,保证给出的是一棵树。

对于20%的数据,有 N,Q<=10^3

对于另外20%的数据,有 x=1

对于另外10%的数据,有 Q<=100 ,每次操作的x互不相同。

对于另外10%的数据,给出的树是一条链。

对于另外10%的数据,给出的树是一个菊花图。

样例解释

第一次操作,1,2,3,4,5号节点上的集合被插入了1。

第二次操作,3,4,5号节点上的集合被插入了2。

第三次操作,4号节点上的集合再次被插入2, 但f(2)的值不变。

由于有5个节点上的集合包含1,3个节点上的集合包含2, 所以f(1)=5, f(2)=3, 其余f(y)=0。

所以答案为5+3=8。