#loj5613. 「PA 2016 Final」Mrówki

「PA 2016 Final」Mrówki

[AdditionalFile5613.zip](file://AdditionalFile5613.zip?type=additional_file)

#5613. 「PA 2016 Final」Mrówki

标签: 传统 | 时间限制: 11000 ms | 内存限制: 256 MiB |

题目描述

题目译自 PA 2016 Final Mrówki

在 Stubajtowy 森林中,蚂蚁们建造了 nn 个蚁丘,编号为从 11nn。这些蚁丘之间通过地下双向道路连接,使得任意两个蚁丘之间都恰好存在一条路径(即不经过重复道路且不往返)。

Stubajtowy 森林的蚁后下令对蚁丘的人员构成进行年度轮换。这次轮换涉及 mm 只工蚁:其中第 ii 只工蚁需要在时刻 tit_{i} 离开它目前所在的蚁丘 aia_{i},前往目的地蚁丘 bib_{i}。所有的蚂蚁都以相同的速度匀速前进,且中途不会停下。

据推测,如果在路径上的某个点同时聚集了太多的蚂蚁,它们可能会产生「分裂」行为。在工蚁们出发之前,蚁后想知道对于其中的每一只工蚁,在它的整个行程中,同一时刻能与之相遇(即处于同一条道路的同一点,或处于同一个蚁丘内)的其他移动蚂蚁构成的集合的最大规模是多少。我们仅考虑旅途中的相遇:具体而言,如果第 ii 只蚂蚁在时刻 tit_{i}^{\prime} 到达目标蚁丘,那么我们只计算蚂蚁 ii 与蚂蚁 jj 在时间区间 $[t_{i}, t_{i}^{\prime}] \cap [t_{j}, t_{j}^{\prime}]$ 内发生的相遇。

输入格式

第一行包含两个整数 nnmm (1n,m100000)(1 \leq n, m \leq 100000),分别表示蚁丘的数量和参与轮换的蚂蚁数量。

接下来的 n1n-1 行描述了蚁丘之间的道路网。每行包含三个整数 ui,viu_{i}, v_{i}did_{i} $(1 \leq u_{i}, v_{i} \leq n, u_{i} \neq v_{i}, 1 \leq d_{i} \leq 10^{9})$,表示蚁丘 uiu_{i}viv_{i} 之间由一条道路连接,工蚁通过该道路需要 did_{i} 个单位时间。

接下来的 mm 行描述了参与轮换的蚂蚁。第 ii 行包含三个整数 ai,bia_{i}, b_{i}tit_{i} $(1 \leq a_{i}, b_{i} \leq n, a_{i} \neq b_{i}, 1 \leq t_{i} \leq 10^{9})$。

输出格式

输出 mm 行。第 ii 行应包含一个整数,表示蚂蚁 ii 在其旅途中,同一时刻能遇到的其他移动蚂蚁(不包括自身)构成的最大集合的规模。

样例

输入

6 5
1 3 1
2 3 1
3 4 2
4 5 1
4 6 2
1 2 3
2 5 3
5 1 1
6 5 4
6 3 5

输出

2
2
2
1
0