atcoder#ARC090B. [ABC087D] People on a Line

[ABC087D] People on a Line

配点 : 400400

問題文

xx 軸上に NN 人の人が立っています。 人 ii の位置を xix_i とします。 任意の ii に対して、xix_i00 以上 10910^9 以下の整数です。 同じ位置に複数の人が立っていることもありえます。

これらの人の位置に関する情報が MM 個与えられます。 このうち ii 個めの情報は (Li,Ri,Di)(L_i, R_i, D_i) という形をしています。 この情報は、人 RiR_i は人 LiL_i よりも距離 DiD_i だけ右にいること、 すなわち、xRixLi=Dix_{R_i} - x_{L_i} = D_i が成り立つことを表します。

これら MM 個の情報のうちのいくつかに誤りがある可能性があることがわかりました。 与えられる MM 個すべての情報と矛盾しないような値の組 (x1,x2,...,xN)(x_1, x_2, ..., x_N) が存在するかどうか判定してください。

制約

  • 1N100,0001 \leq N \leq 100,000
  • 0M200,0000 \leq M \leq 200,000
  • 1Li,RiN1 \leq L_i, R_i \leq N (1iM1 \leq i \leq M)
  • 0Di10,0000 \leq D_i \leq 10,000 (1iM1 \leq i \leq M)
  • LiRiL_i \neq R_i (1iM1 \leq i \leq M)
  • iji \neq j のとき、(Li,Ri)(Lj,Rj)(L_i, R_i) \neq (L_j, R_j) かつ (Li,Ri)(Rj,Lj)(L_i, R_i) \neq (R_j, L_j)
  • DiD_i は整数である

入力

入力は以下の形式で標準入力から与えられる。

NN MM

L1L_1 R1R_1 D1D_1

L2L_2 R2R_2 D2D_2

::

LML_M RMR_M DMD_M

出力

与えられるすべての情報と矛盾しない値の組 (x1,x2,...,xN)(x_1, x_2, ..., x_N) が存在するときは Yes と、存在しないときは No と出力せよ。

3 3
1 2 1
2 3 1
1 3 2
Yes

値の組 (x1,x2,x3)(x_1, x_2, x_3) として、(0,1,2)(0, 1, 2)(101,102,103)(101, 102, 103) などが考えられます。

3 3
1 2 1
2 3 1
1 3 5
No

はじめの 22 つの情報が正しいとすると、x3x1=2x_3 - x_1 = 2 が成り立つことが分かります。 これは最後の情報に矛盾します。

4 3
2 1 1
2 3 5
3 4 2
Yes
10 3
8 7 100
7 9 100
9 8 100
No
100 0
Yes