2505: 苹果树
内存限制:256 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:8
解决:3
题目描述
在卡卡的家门前有一棵苹果树。每个秋天都会结许多苹果。卡卡非常喜欢苹果,所以他总是悉心照料这棵大苹果树。
这棵树有N个分叉点,并且它们之间用树枝连接。卡卡将这些分叉点编号,并且树根的编号总是1。苹果就长在这些分叉点上,当然一个分叉点不会长出两个及以上的苹果。卡卡想要知道一个子树中有多少个苹果,以此来了解这棵苹果树的生产能力。
现在的麻烦是,有些时候,卡卡会从树上摘下苹果,而有些时候,一个没有苹果的分叉点上又会长出苹果。你能帮卡卡处理这个问题吗?
输入
第一行是一个正整数N(1 ≤ N ≤ 100000),代表苹果树的分叉点个数。
接下来N - 1行,每行两个正整数u和v,代表分叉点u和v之间有一根树枝相连。
下一行包含一个正整数M(1 ≤ 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。