记录编号 257863 评测结果 AAAAAAAAAA
题目名称 [HEOI 2016] 树 最终得分 100
用户昵称 Gravatar沉迷学习的假的Keller 是否通过 通过
代码语言 C++ 运行时间 0.137 s
提交时间 2016-05-03 08:19:47 内存使用 1.08 MiB
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 100005;
int fa[maxn];
int vis[maxn];
int n,m;
inline void read(int &k){
       char c;k=0;
       do{c=getchar();}while(c<'0'||c>'9');
       do{k=k*10+c-'0';c=getchar();}while(c>='0'&&c<='9');
}
inline int find(int x){
	if(vis[x]) return x;
	else return find(fa[x]);	
}
int main(){
	freopen("heoi2016_tree.in","r",stdin);
	freopen("heoi2016_tree.out","w",stdout);
	//scanf("%d%d",&n,&m);
	read(n);
	read(m);
	for(int i=1;i<n;i++){
		int x,y;
		//scanf("%d%d",&x,&y);
		read(x);
		read(y);
		fa[y]=x;
	}
	vis[1]=1;
	for(int i=1;i<=m;i++){
		char ch[5]; int x;
		scanf("%s%d",ch,&x);
		if(ch[0]=='Q') {
			printf("%d\n",find(x));
		}
		else vis[x]=1;
	}
}