atcoder#AGC031F. [AGC031F] Walk on Graph

[AGC031F] Walk on Graph

Score : 20002000 points

Problem Statement

You are given a connected graph with NN vertices and MM edges. The vertices are numbered 11 to NN. The ii-th edge is an undirected edge of length CiC_i connecting Vertex AiA_i and Vertex BiB_i.

Additionally, an odd number MODMOD is given.

You will be given QQ queries, which should be processed. The queries take the following form:

  • Given in the ii-th query are SiS_i, TiT_i and RiR_i. Print YES if there exists a path from Vertex SiS_i to Vertex TiT_i whose length is RiR_i modulo MODMOD, and print NO otherwise. A path may traverse the same edge multiple times, or go back using the edge it just used.

Here, in this problem, the length of a path is NOT the sum of the lengths of its edges themselves, but the length of the first edge used in the path gets multiplied by 11, the second edge gets multiplied by 22, the third edge gets multiplied by 44, and so on. (More formally, let L1,...,LkL_1,...,L_k be the lengths of the edges used, in this order. The length of that path is the sum of Li×2i1L_i \times 2^{i-1}.)

Constraints

  • 1N,M,Q500001 \leq N,M,Q \leq 50000
  • 3MOD1063 \leq MOD \leq 10^{6}
  • MODMOD is odd.
  • 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
  • The given graph is connected. (It may contain self-loops or multiple edges.)

Input

Input is given from Standard Input in the following format:

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

Output

Print the answers to the ii-th query in the ii-th line.

3 2 2 2019
1 2 1
2 3 2
1 3 5
1 3 4
YES
NO

The answer to each query is as follows:

  • The first query: If we take the path 1,2,31,2,3, its length is 1×20+2×21=51 \times 2^0 + 2 \times 2^1 = 5, so there exists a path whose length is 55 modulo 20192019. The answer is YES.
  • The second query: No matter what path we take from Vertex 11 to Vertex 33, its length will never be 44 modulo 20192019. The answer is NO.
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
1 2 3 25
1 1 1
1 1 2
1 1 13
1 1 6
1 1 14
YES
YES
YES
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