简单题,主要为了练手。

 #include <cstdio>
#include <iostream>
#define maxn 100010
using namespace std; namespace L {
int pnt[maxn], pre[maxn], son[maxn][], rtg[maxn], val[maxn], mxv[maxn]; inline void update( int nd ) {
mxv[nd] = max( val[nd], max(mxv[son[nd][]],mxv[son[nd][]]) );
}
void rotate( int nd, int d ) {
int p = pre[nd];
int s = son[nd][!d];
int ss = son[s][d];
son[nd][!d] = ss;
son[s][d] = nd;
if( p ) son[p][ nd==son[p][] ] = s;
else pnt[s] = pnt[nd];
pre[nd] = s;
pre[ss] = nd;
pre[s] = p;
update(nd);
update(s);
}
void pushdown( int nd ) {
if( rtg[nd] ) {
int &ls=son[nd][], &rs=son[nd][];
swap(ls,rs);
rtg[ls] ^= ;
rtg[rs] ^= ;
rtg[nd] = ;
}
}
void bigpush( int nd ) {
if( pre[nd] ) bigpush(pre[nd]);
pushdown(nd);
}
void splay( int nd, int top= ) {
bigpush(nd);
while( pre[nd]!=top ) {
int p = pre[nd];
int nl = nd==son[p][];
if( pre[p]==top ) {
rotate( p, nl );
} else {
int pp = pre[p];
int pl = p==son[pp][];
if( nl==pl ) {
rotate( pp, pl );
rotate( p, nl );
} else {
rotate( p, nl );
rotate( pp, pl );
}
}
}
}
void access( int nd ) {
int u = nd;
int v = ;
while( u ) {
splay(u);
int s = son[u][];
pre[s] = ;
pnt[s] = u;
pre[v] = u;
son[u][] = v;
update(u);
v = u;
u = pnt[u];
}
splay(nd);
}
void init( int n ) {
for( int i=; i<=n; i++ )
pnt[i] = pre[i] = son[i][] = son[i][]
= rtg[i] = val[i] = mxv[i] = ;
}
void makeroot( int nd ) {
access(nd);
rtg[nd] ^= ;
}
void link( int u, int v ) {
makeroot(u);
makeroot(v);
pnt[u] = v;
}
void inc_val( int nd, int w ) {
splay( nd );
val[nd] += w;
update( nd );
}
int qu_max( int u, int v ) {
makeroot(u);
access(v);
return max( val[v], mxv[son[v][]] );
}
}; int n, q; int main() {
scanf( "%d", &n );
L::init(n);
for( int i=,u,v; i<=n; i++ ) {
scanf( "%d%d", &u, &v );
L::link(u,v);
}
scanf( "%d", &q );
while( q-- ) {
char ch[];
int u, v, w;
scanf( "%s", ch );
if( ch[]=='I' ) {
scanf( "%d%d", &u, &w );
L::inc_val(u,w);
} else {
scanf( "%d%d", &u, &v );
printf( "%d\n", L::qu_max(u,v) );
}
}
}

最新文章

  1. video 手机全屏自动播放
  2. 安装composer
  3. noip模拟赛(一)宠物之战
  4. ORACLE创建表之前判断表是否存在与SQL Server 对比使用
  5. 定义一个时钟类——Clock,它包括三个int型 成员变量分别表示时、分、秒,一个构造方法用于对三个成员变量(时、分、秒) 进行初始化,还有一个成员方法show()用于显示时钟对象的时间。其次,再定义 一个主类——TestClass,在主类的main方法中创建多个时钟类的对象,使用这 些对象调用方法show()来显示时钟的时间
  6. Tomcat 集群模式下 Session 更新 Bug (redis memcached 及tomcat自已的集群)
  7. 使用PyInstaller将Python程序打包成一个单独的exe文件
  8. iOS 进阶 第十七天(0420)
  9. [转载]mysql慢日志文件分析处理
  10. SourceGrid zt
  11. 提高xshell使用效率
  12. mac安装office2011,提示无法打开文件Normal.dotm,因为内容有错误
  13. Codeforces #252 (Div. 2) B. Valera and Fruits
  14. Powerdesigner+PostgreSQL
  15. python代码格式
  16. 学习 MeteoInfo二次开发教程(四)
  17. Asp.Net Core WebAPI入门整理(三)跨域处理
  18. JAVA基础知识总结:一到二十二全部总结
  19. 第 7 章 多主机管理 - 046 - 创建 Machine
  20. All you should know about NUMA in VMware!

热门文章

  1. python初步学习-生成式、生成器、迭代器、装饰器
  2. Http Header信息&amp;状态码
  3. linux wc命令的作用。
  4. ltib安装过程中遇到好多问题,从网上转来的好多份总结
  5. vsts 自动部署到Azure
  6. POJ 3278 Catch That Cow(简单BFS)
  7. Valid Sudoku&amp;&amp;Sudoku Solver
  8. fedora下中文输入fcitx4.0
  9. Canvas进阶——制作小游戏【贪吃蛇】
  10. Could not apply the stored configuration for monitors