atcoder#AGC031F. [AGC031F] Walk on Graph

[AGC031F] Walk on Graph

配点 : 20002000

問題文

NN 頂点 MM 辺の連結なグラフが与えられます.各頂点には 1,2,...,N1, 2,...,N と番号がついています. i(1iM)i(1 \leq i \leq M) 番目の辺は頂点 AiA_i と頂点 BiB_i を繋ぐ長さ CiC_i の無向辺です. また,奇数 MODMOD が与えられます.

QQ 個のクエリが与えられるので,処理してください.クエリの形式は以下の通りです.

  • ii 番目のクエリでは,Si,Ti,RiS_i,T_i,R_i が与えられる.頂点 SiS_i から頂点 TiT_i へ至る経路であって,長さを MODMOD で割った余りが RiR_i になるようなものが存在する場合は YES を,存在しない場合は NO を出力する.ただし同じ辺を複数回通っても,来た辺をすぐ戻ってもよい.

ただし,この問題においての経路の長さは辺の長さの単純な和ではなく11 本目に使う辺の長さを 11 倍,22 本目に使う辺の長さを 22 倍,33 本目に使う辺の長さを 44 倍,...... したものの和とします. (より厳密には,長さ L1,...,LkL_1,...,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 行目に,ii 番目のクエリに対する答えを出力せよ.

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

各クエリに対する答えは以下のようになります.

  • 11 番目のクエリ: 頂点 1,2,31,2,3 の順に進むと経路の長さは 1×20+2×21=51 \times 2^0 + 2 \times 2^1 = 5 となり,長さを 20192019 で割った余りが 55 になる経路は存在するので,答えは YES である.
  • 22 番目のクエリ: どのように頂点 11 から頂点 33 まで進んでも経路の長さを 20192019 で割った余りが 44 となることはないので,答えは 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