1 #include<cstdio>
2 #include<cstring>
3 #include<vector>
4 using namespace std;
5 const int maxn=100000+5;
6 struct edge
7 {
8 int v;
9 edge *next;
10 };
11 edge *g[maxn];
12 edge mall[2*maxn];
13 edge *tmp;
14 int c[maxn];
15 int s[maxn];
16 int e[maxn];
17 int vis[maxn];
18 int cnt;
19 int n;
20 int top;
21 void addedge(int u,int v)
22 {
23 tmp=&mall[top++];
24 tmp->v=v;
25 tmp->next=g[u];
26 g[u]=tmp;
27 }
28 void dfs(int u)
29 {
30 vis[u]=1;
31 s[u]=++cnt;
32 for(edge *p=g[u];p!=NULL;p=p->next)
33 {
34 int v=p->v;
35 if(!vis[v])
36 dfs(v);
37 }
38 e[u]=cnt;
39 }
40 int lowbit(int x)
41 {
42 return x&-x;
43 }
44 int sum(int x)
45 {
46 int ret=0;
47 while(x>0)
48 {
49 ret+=c[x];
50 x-=lowbit(x);
51 }
52 return ret;
53 }
54 void add(int x,int inc)
55 {
56 while(x<=n)
57 {
58 c[x]+=inc;
59 x+=lowbit(x);
60 }
61 }
62 int main()
63 {
64 while(scanf("%d",&n)!=EOF)
65 {
66 int u,v;
67 memset(g,0,sizeof(g));
68 top=0;
69 for(int i=1;i<n;i++)
70 {
71 scanf("%d%d",&u,&v);
72 addedge(u,v);
73 addedge(v,u);
74 }
75 cnt=0;
76 memset(vis,0,sizeof(vis));
77 dfs(1);
78 int m;
79 scanf("%d",&m);
80 char com[5];
81 int x;
82 memset(c,0,sizeof(c));
83 for(int i=1;i<=n;i++)
84 add(i,1);
85 for(int i=0;i<m;i++)
86 {
87 scanf("%s%d",com,&x);
88 if(com[0]=='Q')
89 printf("%d\n",sum(e[x])-sum(s[x]-1));
90 else
91 {
92 if(sum(s[x])-sum(s[x]-1)==0)
93 add(s[x],1);
94 else
95 add(s[x],-1);
96 }
97 }
98 }
99 return 0;
100 }