#arc090b. [arc090_b]People on a Line

[arc090_b]People on a Line

问题描述

一些人站在xx轴上。设第ii个人的坐标为xix_i。对于每个iixix_i是一个介于 0010910^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个信息中的一些可能是错误的。请确定是否存在一个与给定信息一致的值集合(x1,x2,...,xN)(x_1, x_2, ..., x_N)

约束条件

  • $1 \leq N \leq 100$000
  • $0 \leq M \leq 200$000
  • 1Li,RiN1 \leq L_i, R_i \leq N (1iM1 \leq i \leq M)
  • $0 \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


示例输入 1

3 3
1 2 1
2 3 1
1 3 2

示例输出 1

Yes

可能的(x1,x2,x3)(x_1, x_2, x_3)值集合有 (0,1,2)(0, 1, 2)(101,102,103)(101, 102, 103)


示例输入 2

3 3
1 2 1
2 3 1
1 3 5

示例输出 2

No

如果前两个信息是正确的,那么x3x1=2x_3 - x_1 = 2成立,这与最后一个信息矛盾。


示例输入 3

4 3
2 1 1
2 3 5
3 4 2

示例输出 3

Yes

示例输入 4

10 3
8 7 100
7 9 100
9 8 100

示例输出 4

No

示例输入 5

100 0

示例输出 5

Yes