#P4856. MloVtry与jump
MloVtry与jump
题目背景
浏览~
题目描述
众所周知,MloVtry有很多纸片人老婆(我永远喜欢IA.jpg),不过很可惜,并不是所有人都是死宅,所以很多人无法理解MloVtry 的兴趣。
Vittorio就是一个坏文明,他十分喜欢刁难MloVtry。
现在Vittorio构建了一个n个点的地图,MloVtry必须穿过这张图才能prpr到它的纸片人老婆。但是穿过地图听起来就太费力气了,于是MloVtry就咬住1号点狠狠一抖,把这张图甩成了一颗有根树。
MloVtry是个好文明,它有一个高科技的设备---弹力装置---来帮助自己。具体的,如果MloVtry在i号点,这个装置会把它从当前点向下弹出a[i](这个值被称为弹力值)个距离---我们认为1号点是在上方的,并且每条边的距离是1。不过问题是MloVtry并不能准确控制自己的落点,换言之降落在哪个位置是不确定的,但是MloVtry可以肯定的是降落的点一定可以让它不拐弯的走回出发的点(也就是只能落在子树内)---它一向认为自己是头耿直的生物。当然,由于a[i]是个正整数,所以它一定可以跳到它老婆的身旁。
现在MloVtry有几个问题,它想知道假设它从x号点出发,赶到老婆身边的期望步数是多少,不过由于化图为树这个操作太耗费能量了,所以这个问题就只能交给它最好的好朋友---您这头神犇了。
但是之前说过,Vittorio是个坏文明,他对弹力装置做了些手脚,每个弹力装置只有在没有树内的落点时才会跳出。并且他可能会偷偷更换掉一些节点上的弹力装置,这可能会带来一点难度,不过您一定没问题。
输入格式
第1行两个整数n,q,表示这个图有n个节点,并且接下来有q个操作。
第2行是一行整数,表示a[i]数组的初始值。
接下来n-1行,每行两个整数u,v,表示有一条连接u,v的无向边。
接下来q行,每行有3~2个整数,具体的:
1 x y 表示Vittorio将x号节点上的弹力装置换成了一个弹力值为y的弹力装置。
0 x 表示MloVtry想知道从x号节点出发的期望步数是多少。
输出格式
请对每个询问输出一个分数
特别的,如果分母为1也请把它输出出来
(如:2/1)
10 3
1 1 1 1 1 1 1 1 1 1
1 2
1 8
1 3
3 6
3 7
6 10
2 4
2 5
4 9
0 1
1 1 2
0 1
16/5
5/2
提示
样例解释
第一个询问
1-2-4-5-out
1-2-5-out
1-8-out
1-3-6-10-out
1-3-7-out
总路径数为:5
总跳跃次数为:16
1-4-9-out
1-5-out
1-6-10-out
1-7-out
(由于存在树内的落点,所以1-out无法行走)
总路径数为:4
总跳跃次数为:10
n<=100000 ,q<=200000
不对a[i]的值做出保证
对于30%的数据,有n<=1000
对于50%的数据,有n<=10000
特殊的
对于20%的数据,有a[i]=1
保证最后答案在2147483647的范围之内。
数据保证在window环境下随机生成。