#include<iostream>
#include<cstdio>
using namespace std;
int read()
{
int a=0,x=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-') x=-x;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
a=(a<<1)+(a<<3)+(ch^48);
ch=getchar();
}
return a*x;
}
const int N=2e5;
int n,m,tim,Edge;
int head[N],top[N],dep[N],size[N],son[N],dfn[N],last[N],Id[N],lazy[N<<2],Max[N<<2];
char opt[5];
struct node
{
int to,nxt;
}a[N<<1];
void add(int from,int to)
{
Edge++;
a[Edge].to=to;
a[Edge].nxt=head[from];
head[from]=Edge;
}
void dfs1(int u,int fa)
{
dep[u]=dep[fa]+1;
size[u]=1;
for(int i=head[u];i;i=a[i].nxt)
{
int v=a[i].to;
if(v==fa) continue;
dfs1(v,u);
size[u]+=size[v];
if(size[v]>size[son[u]]) son[u]=v;
}
}
void dfs2(int u,int fa)
{
if(u==0) return ;
dfn[u]=last[u]=++tim;
Id[tim]=u;
if(u==son[fa]) top[u]=top[fa];
else top[u]=u;
dfs2(son[u],u);
for(int i=head[u];i;i=a[i].nxt)
{
int v=a[i].to;
if(v==fa||v==son[u]) continue;
dfs2(v,u);
}
last[u]=tim;
}
void pushdown(int node,int l,int r)
{
if(lazy[node]==0) return ;
lazy[node<<1]=max(lazy[node<<1],lazy[node]);
lazy[node<<1|1]=max(lazy[node<<1|1],lazy[node]);
Max[node<<1]=max(Max[node<<1],lazy[node]);
Max[node<<1|1]=max(Max[node<<1|1],lazy[node]);
lazy[node]=0;
}
void update(int node)
{
Max[node]=max(Max[node<<1],Max[node<<1|1]);
}
void insert(int node,int l,int r,int x,int y,int k)
{
if(x<=l&&r<=y)
{
if(k>=Max[node])
{
lazy[node]=k;
Max[node]=k;
return ;
}
if(l==r) return ;
}
pushdown(node,l,r);
int mid=(l+r)>>1;
if(x<=mid) insert(node<<1,l,mid,x,y,k);
if(y>mid) insert(node<<1|1,mid+1,r,x,y,k);
update(node);
}
int query(int node,int l,int r,int x)
{
if(l==r) return Max[node];
pushdown(node,l,r);
int mid=(l+r)>>1;
if(x<=mid) return query(node<<1,l,mid,x);
else return query(node<<1|1,mid+1,r,x);
}
int main()
{
n=read();m=read();
for(int i=1;i<n;i++)
{
int u=read();
int v=read();
add(u,v);add(v,u);
}
dfs1(1,0);dfs2(1,0);
insert(1,1,n,1,n,1);
for(int i=1;i<=m;i++)
{
cin>>opt;
int u=read();
if(opt[0]=='C') insert(1,1,n,dfn[u],last[u],dfn[u]);
else printf("%d\n",Id[query(1,1,n,dfn[u])]);
}
return 0;
}
开 O2 也救不了