题目描述
x 軸上に N 人の人が立っています。 人 i の位置を xi とします。 任意の i に対して、xi は 0 以上 109 以下の整数です。 同じ位置に複数の人が立っていることもありえます。
これらの人の位置に関する情報が M 個与えられます。 このうち i 個めの情報は (Li, Ri, Di) という形をしています。 この情報は、人 Ri は人 Li よりも距離 Di だけ右にいること、 すなわち、xRi − xLi = Di が成り立つことを表します。
これら M 個の情報のうちのいくつかに誤りがある可能性があることがわかりました。 与えられる M 個すべての情報と矛盾しないような値の組 (x1, x2, ..., xN) が存在するかどうか判定してください。
输入格式
入力は以下の形式で標準入力から与えられる。
N M L1 R1 D1 L2 R2 D2 : LM RM DM
输出格式
与えられるすべての情報と矛盾しない値の組 (x1, x2, ..., xN) が存在するときは Yes
と、存在しないときは No
と出力せよ。
题目大意
题目描述
在一根数轴上站有 n 个人,我们称第 i 个人的坐标为 xi(xi∈[0,109],xi∈Z),同一个坐标点上可能有多个人。
你现在手上有 m 条信息,第 i 条信息形如 (li,ri,di),含义是第 ri 个人在第 li 个人右数第 di 个坐标点上,换言之,xri−xli=di。
不幸的是,这 m 条信息中的一些可能有误,请你求出是否存在一组 x(x1,x2,x3,…,xn) 满足所有信息。
输入格式
输入格式如下:
输入数据的第一行包含两个以空格分开的整数 n 和 m,分别表示总人数和信息条数;
接下来的 m 行中第 i(1≤i≤m) 行包含三个以空格分开的整数 li,ri,di,表示第 i 条信息是 ri 号人在 li 号人右边 di 个位置上。
输出格式
若存在一组合法的 x,输出一行 Yes
;否则输出一行 No
。
说明
全部的输入数据满足以下条件:
- 1≤n≤100000;
- 0≤m≤200000;
- 1≤li,ri≤n(1≤i≤m);
- 0≤di≤10000(1≤i≤m);
- li=ri(1≤i≤m);
- 如果 i≤j,则有 (li,ri)=(lj,rj),(li,ri)=(rj,lj);
- di 为整数。
样例说明 1
(0,1,2) 与 (101,102,103) 都是合法的解。
样例说明 2
若前两条信息是正确的,则有 x3−x1=2,那么第三条信息就是错误的。
感谢@fbhou 提供的翻译
3 3
1 2 1
2 3 1
1 3 2
Yes
3 3
1 2 1
2 3 1
1 3 5
No
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
提示
制約
- 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 は整数である
Sample Explanation 1
値の組 (x1, x2, x3) として、(0, 1, 2) や (101, 102, 103) などが考えられます。
Sample Explanation 2
はじめの 2 つの情報が正しいとすると、x3 − x1 = 2 が成り立つことが分かります。 これは最後の情報に矛盾します。