2505: 苹果树

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:8 解决:3

题目描述

在卡卡的家门前有一棵苹果树。每个秋天都会结许多苹果。卡卡非常喜欢苹果,所以他总是悉心照料这棵大苹果树。

这棵树有N个分叉点,并且它们之间用树枝连接。卡卡将这些分叉点编号,并且树根的编号总是1。苹果就长在这些分叉点上,当然一个分叉点不会长出两个及以上的苹果。卡卡想要知道一个子树中有多少个苹果,以此来了解这棵苹果树的生产能力。

现在的麻烦是,有些时候,卡卡会从树上摘下苹果,而有些时候,一个没有苹果的分叉点上又会长出苹果。你能帮卡卡处理这个问题吗?

输入

第一行是一个正整数N1 ≤ N ≤ 100000),代表苹果树的分叉点个数。

接下来N - 1行,每行两个正整数uv,代表分叉点uv之间有一根树枝相连。

下一行包含一个正整数M1 ≤ M ≤ 100000),代表操作的数目。

接下来M行,每行代表一个操作。操作可以是以下两种之一:

“C x”代表在分叉点x上的苹果状态被改变了。也就是说,如果之前分叉点x上有苹果,那么现在就被摘掉了;反之,如果以前没有苹果,那么现在就长出了一棵苹果。

“Q x”代表查询以分叉点x为根的子树中一共有多少个苹果(包括x上的苹果,如果分叉点x上有苹果的话)。

一开始,树上长满了苹果。

输出

对每个查询,输出一行一个整数,代表该子树上的苹果个数。

 

样例输入 复制

3
1 2
1 3
3
Q 1
C 2
Q 1

样例输出 复制

3
2

提示

20%的数据,N不超过100;另外有20%的数据,N不超过3000

时间限制为1秒,空间限制为256MB