本题难度较大,需要一定的图论基础。没有了解过LCA和逆元的可以先去学习一下。
树上任意两个点的路径其实是唯一的,所以到达的概率需要通过数个可供选择的邻居数量的倒数相乘,设cnti是节点i的邻居数量,由于概率需要取模,所以我们应用快速幂求乘法逆元得到概率取模后的值。
这里简单介绍一下逆元的知识,假设x * y % mod == 1,那么我们就称y是x的逆元,所以我们其实就是求类似于cnti的逆元。
首先考虑简单的情况,对于两个点u,v,如果它们在树上是祖先-子孙关系,那么通过dfs枚举到子孙v时,我们可以统计从根结点(这个可以自己定,例如定为1)到v这条路径上所有节点的1/(cnti−1)的累乘值:
探险家在一个由 N 个洞穴和 N−1 条通道构成的地下网络中迷路了。该网络连通且没有回路。他目前在某个洞穴,希望到达目标洞穴。在每一个洞穴,如果他尚未到达目标,就会从所有尚未走过的通道中等概率随机选择一条前进。由于走过的通道不会被再次选择,他不会立刻返回到刚刚离开的洞穴。如果在某个非目标洞穴,除了来路外没有其他未走过的通道,他就会困住,永远无法抵达目标。
现在给出 Q 个独立的询问,每个询问包含起始洞穴 a 和目标洞穴 b。你需要计算探险家能成功到达目标洞穴的概率。特别地,如果 a=b,他已经在目标处,概率视为 1。
请将每个询问的概率对 109+7 取模后输出。设概率的最简分数形式为 p/q(p 与 q 互质),则需要输出整数 x 满足 0≤x<109+7 且 q⋅x≡p(mod109+7)。可以证明这样的 x 唯一。
数据范围:洞穴数量 N 满足 N≤2imes105,询问数量 Q 满足 Q≤2imes105。所有洞穴编号均为 1 到 N 的整数。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.