#ATagc031f. [AGC031F] Walk on Graph

[AGC031F] Walk on Graph

题目描述

给定一个有 NN 个顶点、MM 条边的连通无向图。每个顶点编号为 1,2,,N1,2,\ldots,N。第 ii 条边连接顶点 AiA_i 和顶点 BiB_i,边长为 CiC_i。此外,给定一个奇数 MODMOD

QQ 个查询,每个查询的格式如下:

  • ii 个查询给出 Si,Ti,RiS_i,T_i,R_i。请判断是否存在一条从顶点 SiS_i 到顶点 TiT_i 的路径,使得该路径的长度模 MODMOD 后的余数为 RiR_i。这里允许多次经过同一条边,也允许刚走过的边立即返回。

但在本题中,路径的长度不是边长的简单和,而是第 11 条经过的边的长度乘以 11,第 22 条经过的边的长度乘以 22,第 33 条经过的边的长度乘以 44,以此类推。更严格地说,若依次经过长度为 L1,,LkL_1,\ldots,L_k 的边,则该路径的长度为 Li×2i1\sum L_i \times 2^{i-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

输出

YES
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

输出

YES
NO
NO

样例 3

输入

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

输出

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

输出

YES
NO
NO
NO
NO
NO
NO
YES
YES
NO

说明/提示

数据范围

  • 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
  • 给定的图是连通的(但可能有自环和重边)

样例解释 1

各个查询的答案如下:

  • 11 个查询:按 1,2,31,2,3 的顺序前进,路径长度为 1×20+2×21=51 \times 2^0 + 2 \times 2^1 = 5,存在一条长度模 2019201955 的路径,所以答案为 YES
  • 22 个查询:无论如何从顶点 11 到顶点 33,路径长度模 20192019 都不可能为 44,所以答案为 NO

由 ChatGPT 4.1 翻译