3033: 动态树
内存限制:256 MB
时间限制:2.000 S
评测方式:文本比较
命题人:
提交:4
解决:0
题目描述
小W非常喜欢树,特别是动态处理树。
这天他正在玩minecraft,不小心把山上的瀑布引入了自己的家。他只好上山去堵水了。
望着眼前的瀑布,小W想到了一个动态处理树的问题:把这个山上的瀑布看做是个有n个节点的树,树从1开始编号,每个节点有一定的权值(爬上去的代价)。小W要选择一些节点,以其权值和作为代价将这些点删除(堵上),使得根节点(山顶水源)与所有的叶子节点不连通。求最小代价。
不过还没结束,小W觉得这个问题太简单了,便加了些操作,比如,他会不断的修改地形,使得某个节点的权值发生变化。再比如,他每次询问时不一定询问的是整棵树,而是选择一棵子树进行询问。(也就是说每次将一棵子树当做询问的树,而与其他不在子树内的节点无关,这时这棵子树的根即为山顶水源)。
现在小W不会做了,你能帮助他吗?
输入
第一行一个整数n,表示树的大小。
接下来一行包含n个数,表示第i个点的权值。
接下来 n - 1 行每行包含两个数fr, to,表示树中的一条边fr, to。
接下来一行一个整数m,表示操作次数。
接下来m行每行代表一次操作。每行首先包含一个字符,若为字符Q,则表示询问,后面跟一个参数x表示对应子树的根;若为C,表示一次修改,后面接两个参数x, y,表示将 x的权值加上y。
输出
对于每次询问输出一行,表示答案。
样例输入 复制
4
4 3 2 1
1 2
1 3
4 2
4
Q 1
Q 2
C 4 10
Q 1
样例输出 复制
3
1
4
提示
30%的数据:n ≤ 1000
另有30%的数据:树为一条链
100%的数据:1≤ n, m ≤ 2*105 ; 0 ≤ y; 任何时刻树上节点权值和小于263且节点权值非负。