Harry and Christmas tree

Accepts: 3
Submissions: 74
Time Limit: 5000/2500 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
问题描述
圣诞节的夜晚,哈利得到一棵圣诞树。这棵树由n个节点组成,以1号节点为根。树上的每个节点有一些不同颜色的礼物,于是哈利开始统计树上的礼物。哈利每次统计一个礼物,会记录一个(a, b),a表示这个礼物所在的节点,b表示这个礼物的颜色。统计完之后,哈利想知道,每个节点所包含的子树下,有几种不同颜色的礼物。
输入描述
多组输入数据
每组数据第一行由n m组成表示树的大小,以及礼物的个数$1 \leq n \leq 50000, 1 \leq m \leq 500000$
接下来n-1行,每行两个数a b表示节点(a, b)之间有一条边$1 \leq a, b \leq n, a \neq b$
接下来m行,每行两个数a b表示在a节点上有一个颜色为b的礼物$1 \leq a \leq n, 1 \leq b \leq 100000$
输出描述
每组数据输出一行n整数,第i个数表示i节点所包含的子树下有几种不同颜色的礼物。
输入样例
5 3
3 1
4 1
2 3
5 1
1 9
4 6
4 6
输出样例
2 0 0 1 0

提示:
尽可能的让你的程序跑得快一点