#P3676. 小清新数据结构题
小清新数据结构题
题目背景
本题时限 2s,内存限制 256M
题目描述
在很久很久以前,有一棵 个点的树,每个点有一个点权。
现在有 次操作,每次操作是修改一个点的点权或指定一个点,询问以这个点为根时每棵子树点权和的平方和。
(题目不是很好懂,没看太懂的可以看看样例解释)
输入格式
第一行两个整数 。
接下来 行每行两个整数 和 ,表示树中 与 之间有一条边,保证给出的边不会重复。
接下来一行 个整数,第 个整数表示第 个点的点权。
接下来 行每行两或三个数,如果第一个数为 ,那么接下来有两个数 和 ,表示将第 个点的点权修改为 ,如果第一个数为 ,那么接下来有一个数 ,表示询问以 为根时每棵子树点权和的平方和。
输出格式
对于每个询问输出答案。
4 5
1 2
2 3
2 4
4 3 2 1
2 2
1 1 3
2 3
1 2 4
2 4
121
140
194
提示
样例解释
这是一个菊花图, 与 间有边。
一开始每个点点权分别为 。
第一个询问以 为根, 子树中都只有本身一个点, 子树中有所有点,那么 子树中的点权和就分别是自己的点权 , 子树中的点权和就是 ,。
接下来将第一个点点权修改为 ,每个点点权分别为 。
第二个询问以 为根, 子树中只有自己, 子树中有 子树中有所有点, 子树点权和就是自己的点权 , 子树点权和就是 , 子树点权和为 ,。
接下来把第二个点点权修改为 ,每个点点权分别为 。
第三个询问以 为根, 子树点权和就是 和 , 子树点权和就是 , 子树点权和为 ,。
数据范围
对于10%的数据,。
对于40%的数据,。
对于另外30%的数据,保证每次询问的根都为 。
对于100%的数据,, 输入的每个点权 。
建议使用输入优化~~,虽然标程没加读入优化也能过~~