luogu#P8972. 『GROI-R1』 一切都已过去

『GROI-R1』 一切都已过去

题目背景

悦关上窗,拉上帘布。

果然还是想不起来啊。

隐约记得曾和什么人一起做过这样的事。

仰面躺下,手执一只木笺。

「究竟如何,才能拥有“过去”啊……」

她闭上双眼。

「6 岁前的记忆……究竟如何才能寻回?」

题目描述

悦正在寻找她的记忆。忽然,她来到了有 nn 个节点的一棵树上。树上每一条边都有各自边权,每一个点都有各自的点权。

「把经历都聚拢起来,能完整地复原吗……」

悦从树上的一个点,慢慢地走到了另一个点,可是她什么也没找到。但是,她不知道,玘一直在远处望着她走过的道路。

玘发现,悦全程没有走回头路。他想把悦走过的每一条边的边权乘起来,可惜他发现他遇到了一个这一生未曾见到过的数字。

「为什么会这样呢?」

玘想到悦是突然出现在树上的,最初的点一定有蹊跷!他把最初那个点的点权乘上……

突然,一束彼岸花的红光亮起!世界重新安静了下来。

悦看到了玘留下的字样,可惜她不能从中看出任何过去的记忆。现在,你要帮她判断:把经历都聚拢起来,能完整地复原过去吗?我们称悦的一条路径能“复原过去”,当且仅当玘留下的乘积是一个整数

形式化题面

给定一棵 nn 个节点的树和 qq 次询问。每次询问给出两个整数 x,yx,y,表示询问树上以 xxyy 为端点的简单路径上边权乘积与点 xx 的点权相乘是否为整数。

输入格式

第一行两个正整数 nnqq,表示树上有 nn 个节点编号为 1n1\sim n,悦在树上走了 qq 条路径。

接下来一行 nn 个非负整数表示每个点的点权 aia_i

接下来 n1n-1 行每行两个正整数 u,vu,v 和一个非负实数 ww 表示 u,vu,v 间有一条边权为 ww 的边。

接下来 qq 行,每行两个正整数 x,yx,y,表示悦从点 xx 开始走到了点 yy

输出格式

对于悦的每一次询问,你需要输出一行一个字符串。如果悦能够成功复原她的过去,请输出 Yes,否则请输出 No

5 3
1 2 3 4 5
1 2 0.1
2 3 0.20
3 4 0.5
2 5 0.99
1 5
1 4
4 3
No
No
Yes

提示

样例解释

根据输入可以得到下图:

对于第一个询问 (1,5)(1,5) 可以发现悦经过的边的边权分别是 0.10.10.990.99,她出发的 11 号点的点权为 111×0.1×0.99=0.0991\times0.1\times0.99=0.099 不是整数。所以输出 No

对于后面两次询问同理。

数据范围

本题采用捆绑测试。

子任务编号 数据范围 特殊性质 分值
Subtask1\text{Subtask1} n,q3×103n,q\le3\times 10^3 1515
Subtask2\text{Subtask2} n500n\le500q105q\le10^5 1010
Subtask3\text{Subtask3} n,q105n,q\le10^5 BE\text{BE}
Subtask4\text{Subtask4} A\text{A} 55
Subtask5\text{Subtask5} B\text{B} 1010
Subtask6\text{Subtask6} C\text{C} 55
Subtask7\text{Subtask7} D\text{D} 1010
Subtask8\text{Subtask8} n,q2×105n,q\le2×10^5 3535

特殊性质 A\text{A}:保证树退化成一条链。

特殊性质 B\text{B}:保证树随机生成(即对于每一个节点随机选择它的父亲节点)。

特殊性质 C\text{C}:保证 w{0.1,0.3,0.5,0.7,0.9}w\in\{0.1,0.3,0.5,0.7,0.9\}

特殊性质 D\text{D}:保证 w{0.1,0.2,0.3,0.4,0.6,0.7,0.8,0.9}w\in\{0.1,0.2,0.3,0.4,0.6,0.7,0.8,0.9\}

特殊性质 E\text{E}:保证 w2w\le2ww 小数位数不超过 11 位。

对于 100%100\% 的数据满足 1n,q2×1051\le n,q\le2\times10^50ai1090\le a_i\le10^90w1040\le w\le10^41u,v,x,yn1\le u,v,x,y\le nxyx\ne yww 小数位数不超过 44 位。