Rolling
题号:NC238622
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定一棵n个节点的树,每条边均有其边权。
现在等概率随机选择一个节点,令其为根节点。放置一个小球在根节点上。尔后小球反复执行如下过程,直至抵达某一个叶子节点:在某个节点处,小球以正比于去向孩子的边权的概率滚向它的一个孩子。

形式化地,假设小球当前停留在节点u,它的孩子分别是u_1,u_2...u_m,边(u,u_1)的边权记为e_1,边(u,u_2)的边权记为e_2……
则对于任意,小球下一步滚向u_i的概率为

问,对于每个叶子节点(度数为1)的点,小球最终停留在该点的概率是多少?

输入描述:

第一行正整数n,代表节点个数。
接下来n-1行,每行三个数字u,v,e,代表一条连接(u,v),边权为e的边。
保证给出的是一棵树。

输出描述:

假设共有p个叶子节点,则输出一行p个数,按照叶子节点标号从小到大的顺序,输出每个节点对应的概率。答案模输出。
示例1

输入

复制
3
1 2 1
2 3 2

输出

复制
444444448 555555560

说明

如果根节点为1,则有1的概率最终停在3号节点。
如果根节点为3,则有1的概率最终停在1号节点。
如果根节点为2,则有\frac{1}{3}的概率停在1号节点,\frac{2}{3}的概率停在3号节点。

故最终停在1号节点的概率为\frac{0+1+\frac{1}{3}}{3}=\frac{4}{9},停在3号节点的概率为\frac{1+0+\frac{2}{3}}{3} = \frac{5}{9}

注意按照叶子节点的编号顺序输出对应的概率。
示例2

输入

复制
7
1 2 3
1 3 4
2 5 1
3 4 6
3 6 4
4 7 5

输出

复制
102690168 881261602 16048238