#2213. 徐老师的施肥计划

徐老师的施肥计划

题目描述

夏天到了,在这么热的天气里吃上一块冰镇西瓜,多是一件美事啊!

于是在自己家花园里开辟了一块土地用来种西瓜,为了快速吃到西瓜,徐老师只是简单的挖了 nn 个坑(编号 1n1 \sim n)用来种西瓜,西瓜坑和西瓜坑之间也只铺了 n1n-1 条小路来连接它们

而因为这些小路是徐老师简单挖出来的,所以每条小路有一个易坏度 aia_i,一开始每条路的损坏程度是 00,每当有人或者机器经过这条小路,这条路的损坏程度就会增加 aia_i

聪明的徐老师为了方便施肥,特意造了一台施肥机,将地图的信息输入到了施肥机中后,设计了一系列施肥方案:每个方案由 ui,vi,riu_i,v_i,r_i 描述,表示施肥机会由 uiu_i 出发,沿着小路到达 viv_i 而施肥机每次会带上一定重量的肥料,可能会对小路造成更多的破坏,这里用 rir_i 来表示这一次施肥机对小路破坏程度增加的系数,也就是原本经过一条小路时,会让小路的损坏程度增加 axa_x,现在变成 axria_x * r_i

现在徐老师在施肥机进行施肥方案的过程中,会进行西瓜地的损坏程度查询

leni,jlen_{i,j} 表示西瓜坑 ii 到西瓜坑 jj 的路径上所有小路的损坏程度之和

整个西瓜地的损坏程度即为 leni,j,其中1i,jn\sum{len_{i,j}},其中 1 \leq i,j \leq n

输入格式

输入一个整数 nn 表示西瓜坑的数量

接下来 n1n - 1 行,每行三个整数 xi,yi,aix_i,y_i,a_i 表示编号为 xi,yix_i,y_i 的西瓜坑之间存在一条小路,这条小路的易坏度为 aia_i

为了方便,这里将施肥方案和查询合并为 mm 次操作 对于第 ii 次操作,首先一个整数 opop 用来描述这是施肥方案还是查询 op==1op == 1 时表示这是一个施肥方案,接下来输入三个整数 ui,vi,riu_i,v_i,r_i,含义如题,并且施肥机会执行这个施肥方案 op==2op == 2 时表示这是徐老师的一次查询,请计算整个西瓜地现在的损坏程度

输出格式

因为查询次数可能很多,为了方便,请将每次查询的结果求和,并对 109+710^9+7 取模输出

数据范围

测试点编号 n,mn,m \leq 特殊性质
1 10 树是一条链
2 1000
3 10510^5
4-5 200
6-7 2000
8-10 21052*10^5

样例输入

3
1 2 10
2 3 1
3
2
1 1 3 3
2

样例输出

66

样例解释

第一次查询的结果为 00 接下来一个施肥方案从 1133,会经过 11 号边和 22 号边,11 号边的损坏程度增加 103=3010 * 3 = 3022 号边的损坏程度增加 13=31 * 3 = 3 此时 11 号边的损坏程度为 3030, 22 号边的损坏程度为 33 第二次查询的结果为 $len_{1,2} + len_{2,3} + len{1,3} = 30 + 3 + 33 = 66$ 最后答案即为 0+66=660 + 66 = 66