编程题
### 问题描述 小 $L$ 有一棵树,每条边都有边权。定义 $dist(x,y)$ 表示 $x$ 号点到 $y$ 号点的唯一简单路径上的边权和(即 $x$ 和 $y$ 的距离)。现在小 $L$ 想知道: $$ \sum_{i=1}^{n} \sum_{j=i+1}^{n} dist(i,j) $$ 即树上点两两之间的距离和。然而这个树是会不断变换的,每一次都会有一条边的权值改变。每一次修改之后,小 $L$ 都想知道树上点两两之间的距离和,你可以帮帮他吗? ### 输入格式 第一行有三个正整数 $n$,$q$,分别表示树的点数,和修改的次数。 接下来 $n-1$ 行,每行三个数 $x_i$,$y_i$,$w_i$,表示编号为 $i$ 的边连接了 $x_i$ 和 $y_i$,边权为 $w_i$。 接下来 $q$ 行,每行两个数 $id_i$,$w_i$,表示将编号为 $id_i$ 的边的权值改为 $w_i$。 ### 输出格式 输出共 $q$ 行,第 $i$ 行表示第 $i$ 次修改后树上点两两之间的距离和。 ### 样例输入 ``` 4 2 1 2 1 1 3 1 1 4 1 1 2 2 3 ``` ### 样例输出 ``` 12 18 ``` ### 评测数据范围 对于 $20\\%$ 的数据,满足 $n \leq 100$, $q \leq 100$。 对于 $40\\%$ 的数据,满足 $n \leq 3000$, $q \leq 3000$。 另有 $20\\%$ 的数据,满足 $n \leq 200000$, $q = 1$。 对于 $100\\%$ 的数据,满足 $1 \leq n \leq 200000$, $1 \leq q \leq 200000$, $1 \leq w_i \leq 1000$。
查看答案
赣ICP备20007335号-2