记录编号 435779 评测结果 AAAAAAAAAA
题目名称 [HEOI 2016] 树 最终得分 100
用户昵称 Gravatarxzz_233 是否通过 通过
代码语言 C++ 运行时间 0.152 s
提交时间 2017-08-10 11:39:30 内存使用 1.81 MiB
显示代码纯文本
//暴力出奇迹!!!!!
#include<cstdio>
struct node {
    int brother,firstson,ans;
    bool T;
} dots[100001];
inline int gi() {
    int x=0;
    char c=getchar();
    while(c<'0' || c>'9')c=getchar();
    while(c>='0' && c<='9')x=x*10+c-'0',c=getchar();
    return x;
}
inline void dfs(int a,int Ans) {
    dots[a].ans=Ans;
    for(int i=dots[a].firstson; i; i=dots[i].brother)
	if(!dots[i].T)dfs(i,Ans);
}
int main() {
    freopen("heoi2016_tree.in","r",stdin);
    freopen("heoi2016_tree.out","w",stdout);
    int n=gi(),dt1,dt2,q=gi();
    char ch;
    for(int i=1; i<=n; i++)
	dots[i].ans=1;
    dots[1].T=1;
    for(int i=1; i<n; i++) {
	dt1=gi();
	dt2=gi();
	dots[dt2].brother=dots[dt1].firstson;
	dots[dt1].firstson=dt2;
    }
    while(q--) {
	ch=getchar();
	while(ch!='Q'&&ch!='C')ch=getchar();
	dt1=gi();
	if(ch=='Q')printf("%d\n",dots[dt1].ans);
	else {
	    dots[dt1].T=1;
	    dfs(dt1,dt1);
	}
    }
    return 0;
}