配点 : 400 点
問題文
x 軸上に N 人の人が立っています。
人 i の位置を xi とします。
任意の i に対して、xi は 0 以上 109 以下の整数です。
同じ位置に複数の人が立っていることもありえます。
これらの人の位置に関する情報が M 個与えられます。
このうち i 個めの情報は (Li,Ri,Di) という形をしています。
この情報は、人 Ri は人 Li よりも距離 Di だけ右にいること、
すなわち、xRi−xLi=Di が成り立つことを表します。
これら M 個の情報のうちのいくつかに誤りがある可能性があることがわかりました。
与えられる M 個すべての情報と矛盾しないような値の組 (x1,x2,...,xN) が存在するかどうか判定してください。
制約
- 1≤N≤100,000
- 0≤M≤200,000
- 1≤Li,Ri≤N (1≤i≤M)
- 0≤Di≤10,000 (1≤i≤M)
- Li=Ri (1≤i≤M)
- i=j のとき、(Li,Ri)=(Lj,Rj) かつ (Li,Ri)=(Rj,Lj)
- Di は整数である
入力
入力は以下の形式で標準入力から与えられる。
N M
L1 R1 D1
L2 R2 D2
:
LM RM DM
出力
与えられるすべての情報と矛盾しない値の組 (x1,x2,...,xN) が存在するときは Yes
と、存在しないときは No
と出力せよ。
3 3
1 2 1
2 3 1
1 3 2
Yes
値の組 (x1,x2,x3) として、(0,1,2) や (101,102,103) などが考えられます。
3 3
1 2 1
2 3 1
1 3 5
No
はじめの 2 つの情報が正しいとすると、x3−x1=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