1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<string.h>
4 typedef struct{
5 int to,nxt;
6 }edge;
7 edge gra[500010];
8 int head[250010],num=0;
9 int bit[250010],n;
10 int cnt=0,beg[250010],end[250010];
11 int add(int frm,int to){
12 gra[++num].nxt=head[frm];
13 gra[num].to=to;
14 head[frm]=num;
15 return 0;
16 }
17 int dfs(int u,int fa){
18 beg[u]=++cnt;
19 for(int j=head[u];j;j=gra[j].nxt){
20 if(gra[j].to!=fa){
21 dfs(gra[j].to,u);
22 }
23 }
24 end[u]=cnt;
25 return 0;
26 }
27 int lb(int x){
28 return x&(-x);
29 }
30 int c(int x,int t){
31 while(x<=n){
32 bit[x]+=t;
33 x+=lb(x);
34 }
35 return 0;
36 }
37 int q(int x){
38 int ans=0;
39 while(x){
40 ans+=bit[x];
41 x-=lb(x);
42 }
43 return ans;
44 }
45 int main(){
46 scanf("%d",&n);
47 for(int i=1;i<n;i++){
48 int u,v;
49 scanf("%d %d",&u,&v);
50 add(u,v);
51 add(v,u);
52 }
53 dfs(1,0);
54 for(int i=1;i<=n;i++){
55 c(beg[i],1);
56 c(end[i]+1,-1);
57 }
58 c(end[1]+1,1);
59 int m;
60 scanf("%d",&m);
61 for(int i=1;i<=n+m-1;i++){
62 char in[2];
63 scanf("%s",in);
64 if(in[0]==‘W‘){
65 int x;
66 scanf("%d",&x);
67 printf("%d\n",q(beg[x])-1);//好好想想
68 }else{
69 int x,y;
70 scanf("%d %d",&x,&y);
71 c(beg[y],-1);
72 c(end[y]+1,1);
73 }
74 }
75 return 0;
76 }