#2054. 「TJOI / HEOI2016」树

思路:

  线段树;

代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define maxn 100005
#define maxm maxn<<1
#define maxtree maxn<<2
int n,head[maxn],E[maxm],V[maxm],cnt,m,deep[maxn],li[maxn],ri[maxn];
int val[maxtree],L[maxtree],R[maxtree],mid[maxtree],key[maxtree],tmp1,tmp2;
bool if_[maxtree];
inline void in(int &now)
{
char Cget=getchar();now=;
while(Cget>''||Cget<'') Cget=getchar();
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
}
void dfs(int now,int fa)
{
deep[now]=deep[fa]+,li[now]=++cnt;
for(int i=head[now];i;i=E[i])
{
if(V[i]==fa) continue;
dfs(V[i],now);
}
ri[now]=cnt;
}
void build(int now,int l,int r)
{
L[now]=l,R[now]=r;
if(l==r)
{
if_[now]=true,val[now]=,key[now]=;
return;
}
mid[now]=l+r>>;
build(now<<,l,mid[now]);
build(now<<|,mid[now]+,r);
}
void change(int now,int l,int r,int va,int ke)
{
if(L[now]>=l&&R[now]<=r)
{
if(if_[now])
{
if(ke>key[now])key[now]=ke,val[now]=va;
}
else if_[now]=true,key[now]=ke,val[now]=va;
return;
}
if(l<=mid[now]) change(now<<,l,r,va,ke);
if(r>mid[now]) change(now<<|,l,r,va,ke);
}
void query(int now,int to)
{
if(if_[now]&&key[now]>tmp2) tmp1=val[now],tmp2=key[now];
if(L[now]==R[now]) return;
if(to<=mid[now]) query(now<<,to);
else query(now<<|,to);
}
int main()
{
in(n),in(m);int u,v;
for(int i=;i<n;i++)
{
in(u),in(v);
E[++cnt]=head[u],V[cnt]=v,head[u]=cnt;
E[++cnt]=head[v],V[cnt]=u,head[v]=cnt;
}
cnt=,dfs(,),build(,,n);
char op[];
for(int i=;i<=m;i++)
{
scanf("%s",op),in(u);
if(op[]=='C') change(,li[u],ri[u],u,deep[u]);
else tmp1=,tmp2=,query(,li[u]),printf("%d\n",tmp1);
}
return ;
}

最新文章

  1. 20145227&amp;20145201 《信息安全系统设计基础》实验三
  2. Error retrieving parent for item: No resource found that matches the given name &#39;android:TextAppearance.Material.Widget.Button.Inverse&#39;.
  3. 安装依赖包时--save-dev以及-save的区别及意义
  4. Xcode全局断点
  5. DHCP服务自动分配IP地址原理
  6. core文件找不到了
  7. oracle监控脚本【转】
  8. Oracle-表被锁住
  9. 网站集群架构(LVS负载均衡、Nginx代理缓存、Nginx动静分离、Rsync+Inotify全网备份、Zabbix自动注册全网监控)--技术流ken
  10. 基于vue-cli,sass,vant的移动端项目
  11. surfer画世界频率分布图(等高线、地点标注)
  12. .net 连接 Oracle 可能需要配置
  13. jmeter解决登录token获取
  14. Sencha Touch 实战开发培训 视频教程 第二期 第三节
  15. SQL Fundamentals: 分组统计查询(FROM-WHERE-GROUPBY-HAVING-SELECT-ORDER BY)
  16. joinablequeue模块 生产者消费者模型 Manager模块 进程池 管道
  17. 怎样让你的APK跑在 com.android.phone 进程
  18. 洛谷 P4211 [LNOI2014]LCA (树链剖分+离线)
  19. MySql Replication基本原理
  20. 利用Django中间件middleware解决用户未登录问题(转)

热门文章

  1. Python3 字典 get() 方法
  2. Python高级语法总结
  3. UESTC--1300
  4. laravel 5.5 在构造函数使用Session
  5. CollectionUtils.isEqualCollection的用法
  6. JS获取URL中参数值(QueryString)的4种方法分享
  7. 从零搭建SSM框架(五)Maven实现Tomcat热部署
  8. hihocoder1415 后缀数组三&#183;重复旋律3
  9. Spring Boot工程结构推荐
  10. 【洛谷 P4219】 [BJOI2014]大融合(LCT)