记录编号 |
435779 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[HEOI 2016] 树 |
最终得分 |
100 |
用户昵称 |
xzz_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;
}