给定一棵树,树的每个节点都储存有初始魔力值。对于每次操作,指定两节点 u 和 v,我们需要从节点 u 到节点 v 的路径上,按路径的顺序给节点增加一定的魔力值。增加的魔力值是从 x 开始,依次递增。
在树上,任意两点之间有且仅有一条简单路径。因此,我们首先需要能够高效地计算出两点之间的路径。这个问题的关键是如何快速找到路径,并在路径上更新魔力值。
在一张由 n 个魔力节点构成的无根树形法阵中,节点编号为 1 到 n,第 i 个节点初始储存的魔力值为 ai。
对于树上的任意两个节点 u,v,定义它们之间的路径长度 d(u,v) 为节点 u 到 v 的简单路径所包含的边数。
现在要进行 q 次充能操作,每次操作给出三个整数 u,v,x。该操作会从节点 u 出发,沿着唯一简单路径走向节点 v,为路径上依次经过的第 1 个、第 2 个、……、第 d(u,v)+1 个节点分别注入 x,x+1,x+2,…,x+d(u,v) 点魔力。注意:若路径上某个节点被多次访问,它会累计得到所有对应的魔力注入。
请你计算所有操作完成后,每个节点的最终魔力值。
约束条件
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.