#P9565. [SDCPC 2023] Not Another Path Query Problem

[SDCPC 2023] Not Another Path Query Problem

Description

【题目背景】

都什么年代了还在做传统路径查询问题?

在阅读《Distributed Exact Shortest Paths in Sublinear Time》这篇论文后,您学会了如何在 O(D1/3(nlogn)2/3)\mathcal{O}(D^{1/3} \cdot (n \log n)^{2/3}) 的复杂度内解决分布式单源最短路问题。为了测试您是否真的学有所成,小青鱼为您准备了如下问题。

小青鱼有一张包含 nn 个节点与 mm 条无向边的图,节点编号从 11nn。第 ii 条边连接节点 uiu_iviv_i,边权为 wiw_i

对于任意一条连接节点 uuvv 的路径,定义路径的价值为路径上所有边的边权进行按位与(bitwise AND)计算的结果。

小青鱼很喜欢高价值的路径,因此他设定了一个固定的阈值 VV。称小青鱼喜爱一条路径,当且仅当这条路径的价值至少为 VV

接下来,小青鱼将会提出 qq 次询问,第 ii 次询问可以用一对整数 (ui,vi)(u_i, v_i) 表示。对于每次询问,您需要判断节点 uiu_iviv_i 是否存在一条小青鱼喜爱的路径。

Input Format

每个测试文件仅有一组测试数据。

第一行输入四个整数 nnmmqqVV1n1051 \le n \le 10^50m5×1050 \le m \le 5 \times 10^51q5×1051 \leq q \leq 5 \times 10^50V<2600 \leq V < 2^{60})表示图中的节点数以及边数,小青鱼的询问数以及固定阈值。

对于接下来 mm 行,第 ii 行输入三个整数 uiu_iviv_iwiw_i1ui,vin1 \le u_i,v_i \le nuiviu_i \ne v_i0wi<2600 \leq w_i < 2^{60})表示一条连接节点 uiu_iviv_i 的无向边,边权为 wiw_i。两个节点之间可能存在多条边。

对于接下来 qq 行,第 ii 行输入两个整数 uiu_iviv_i1ui,vin1 \leq u_i, v_i \leq nuiviu_i \ne v_i)表示一次询问。

Output Format

每次询问输出一行。若节点 uiu_iviv_i 之间存在一条价值至少为 VV 的路径输出 Yes,否则输出 No

【样例解释】

接下来我们用 &\& 表示按位与计算。

第一组样例数据解释如下。

  • 对于第一次询问,一条合法的路径为 134561 \to 3 \to 4 \to 5 \to 6,其价值为 7&14&7&6=657 \,\&\, 14 \,\&\, 7 \,\&\, 6 = 6 \ge 5
  • 对于第三次询问,一条合法的路径为 734567 \to 3 \to 4 \to 5 \to 6,其价值为 15&14&7&6=6515 \,\&\, 14 \,\&\, 7 \,\&\, 6 = 6 \ge 5
  • 对于第四次询问,因为节点 1188 之间不存在任何路径,因此答案为 No

对于第二组样例数据仅有的一次询问,可以考虑由第 22 和第 44 条边组成的路径,其价值为 5&6=445 \,\&\, 6 = 4 \ge 4

9 8 4 5
1 2 8
1 3 7
2 4 1
3 4 14
2 5 9
4 5 7
5 6 6
3 7 15
1 6
2 7
7 6
1 8

Yes
No
Yes
No

3 4 1 4
1 2 3
1 2 5
2 3 2
2 3 6
1 3

Yes