#agc031f. [agc031_f]Walk on Graph

[agc031_f]Walk on Graph

问题描述

给定一个具有 NN 个顶点和 MM 条边的连通图。顶点从 11NN 编号。第 ii 条边是连接顶点 AiA_i 和顶点 BiB_i 的无向边,长度为 CiC_i

此外,给定一个奇数 MODMOD

你将得到 QQ 个查询,需要进行处理。查询的形式如下:

  • ii 个查询给出 SiS_iTiT_iRiR_i。如果存在一条从顶点 SiS_i 到顶点 TiT_i 的路径,其长度对 MODMOD 取模等于 RiR_i,则打印 YES,否则打印 NO。路径可以多次经过同一条边,或者使用刚刚使用的边返回。

在此问题中,路径的长度不是其边长的总和,而是路径中使用的第一条边的长度乘以 11,第二条边乘以 22,第三条边乘以 44,依此类推。(更正式地说,设 L1,,LkL_1,\ldots,L_k 是按照这个顺序使用的边的长度,则路径的长度是 Li×2i1L_i \times 2^{i-1} 的总和。)

约束条件

  • 1N,M,Q500001 \leq N,M,Q \leq 50000
  • 3MOD1063 \leq MOD \leq 10^{6}
  • MODMOD 是奇数。
  • 1Ai,BiN1 \leq A_i,B_i \leq N
  • 0CiMOD10 \leq C_i \leq MOD-1
  • 1Si,TiN1 \leq S_i,T_i \leq N
  • 0RiMOD10 \leq R_i \leq MOD-1
  • 给定的图是连通的(可能包含自环或多条边)。

输入

输入以以下格式从标准输入给出:

NN MM QQ MODMOD A1A_1 B1B_1 C1C_1 \vdots AMA_M BMB_M CMC_M S1S_1 T1T_1 R1R_1 \vdots SQS_Q TQT_Q RQR_Q

输出

按照顺序打印第 ii 个查询的答案。

示例输入 1

3 2 2 2019
1 2 1
2 3 2
1 3 5
1 3 4

示例输出 1

YES
NO

每个查询的答案如下:

  • 第一个查询:如果我们选择路径 1,2,31,2,3,其长度为 1×20+2×21=51 \times 2^0 + 2 \times 2^1 = 5,所以存在一条长度对 20192019 取模等于 55 的路径。答案是 YES
  • 第二个查询:无论我们选择从顶点 11 到顶点 33 的哪条路径,其长度都不会对 20192019 取模等于 44。答案是 NO

示例输入 2

6 6 3 2019
1 2 4
2 3 4
3 4 4
4 5 4
5 6 4
6 1 4
2 6 1110
3 1 1111
4 5 1112

示例输出 2

YES
NO
NO

示例输入 3

1 2 3 25
1 1 1
1 1 2
1 1 13
1 1 6
1 1 14

示例输出 3

YES
YES
YES

示例输入 4

10 15 10 15
1 2 1
2 3 6
3 4 6
2 5 1
5 6 1
4 7 6
1 8 11
2 9 6
5 10 11
9 10 11
3 6 1
2 5 1
2 7 11
9 10 11
5 6 11
1 3 5
9 8 3
7 7 7
7 10 13
4 1 10
9 3 12
10 10 14
9 2 1
6 6 5
8 8 4

示例输出 4

YES
NO
NO
NO
NO
NO
NO
YES
YES
NO