T457038 跳跃
题目描述
有一颗$n$个点以$1$为根的树。树上每个结点有一个权值$val$。
白云想从$1$号节点出发开始跳跃,跳跃的规则是:如果两个点$a,b$满足$a$是$b$的祖先且$val[a]$是$val[b]$的倍数,则白云可以从$a$一步跳到$b$。
现在,你需要帮助白云求出,对于每一个点$k$,白云从$1$号点跳若干步到达$k$号点的方案数是多少?
输入格式
第一行一个正整数$n$。
接下来$n-1$行,每行两个数$a,b$表示一条树边。
接下来一行$n$个整数,表示每个点的权值。
输出格式
输出$n$行,一次表示每个点的答案,对$10^9+7$取模。
说明/提示
对于$30\%$的数据满足$n \le 5000$。
对于另$10\%$的数据满足,每个点权值的不同质因子不超过一个。
对于另$20\%$的数据满足,$val[1] \le 10^9$。
对于另$20\%$的数据满足,树是一条链。
对于$100\%$的数据满足,$n \le 10^5,val[1] \le 10^{18}$。
保证每个点的权值都是$val[1]$的约数。