#357. 虫洞

虫洞

【问题描述】

John 在他的农场中闲逛时发现了许多虫洞。虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前)。

John 的农场有 mm 条小路(单向边)连接着 nn 块地(从 1n1 \sim n 标号),每条小路连接两个不同的地块,不存在拥有相同起点和相同终点的两条小路。经过每条小路需要花费一定的时间。如果经过一条小路花费的时间为负值,表示这条路是一个虫洞。

现在 John 希望能够从某块地出发,走过一条路径回到出发点,且同时也回到了出发时刻以前的某一时刻。他希望路径上经过尽可能少的地块。请你告诉他能否做到。如果能,输出他最少需要经过多少块地,否则输出 0

【输入格式】

第一行是两个用空格隔开的整数,分别代表农田的个数 nn,小路的条数 mm

22 到第 (m+1)(m + 1) 行,每行有三个用空格隔开的整数 u,v,pu, v, p,代表有一条从 uuvv 的小路,经过这条路需要花费 pp 的时间。如果 pp 为负数,表示这条路是一个虫洞,经过这个虫洞,时光将倒流 p|p| 个单位时间。

【输出格式】

输出一行一个整数,如果能回到出发时刻之前,则输出 John 最少需要经过的地块数量,否则输出 0

【样例输入1】

2 2
1 2 -2
2 1 1

【样例输出1】

2

【样例输入2】

2 2
1 2 -2
2 1 3

【样例输出2】

0

【数据范围】

2020% 的数据:2n102 ≤ n ≤ 10, 0m200 ≤ m ≤ 20

100100% 的数据:2n3002 ≤ n ≤ 300, 0mn×(n1)0 ≤ m ≤ n×(n-1), 1u,vn1 ≤ u, v ≤ n, p5×104|p| ≤ 5×10^4