[HNOI2015]接水果
题号:NC20114
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

风见幽香非常喜欢玩一个叫做 osu!的游戏,其中她最喜欢玩的模式就是接水果。由于她已经DT FC 了The big black, 她觉得这个游戏太简单了,于是发明了一个更加难的版本。

首先有一个地图,是一棵由 n 个顶点、n-1 条边组成的树(例如图 1给出的树包含 8 个顶点、7 条边)。

这颗树上有 P 个盘子,每个盘子实际上是一条路径(例如图 1 中顶点 6 到顶点 8 的路径),并且每个盘子还有一个权值。第 i 个盘子就是顶点ai到顶点bi的路径(由于是树,所以从ai到bi的路径是唯一的),权值为ci

接下来依次会有Q个水果掉下来,每个水果本质上也是一条路径,第i 个水果是从顶点 ui 到顶点vi 的路径。

幽香每次需要选择一个盘子去接当前的水果:一个盘子能接住一个水果,当且仅当盘子的路径是水果的路径的子路径(例如图1中从 3到7 的路径是从1到8的路径的子路径)。这里规定:从a 到b的路径与从b到 a的路径是同一条路径。

当然为了提高难度,对于第 i 个水果,你需要选择能接住它的所有盘子中,权值第 ki 小的那个盘子,每个盘子可重复使用(没有使用次数的上限:一个盘子接完一个水果后,后面还可继续接其他水果,只要它是水果路径的子路径)。幽香认为这个游戏很难,你能轻松解决给她看吗?

 

输入描述:

第一行三个数 n和P 和Q,表示树的大小和盘子的个数和水果的个数。
接下来n-1 行,每行两个数 a、b,表示树上的a和b之间有一条边。树中顶点按1到n标号。
接下来 P 行,每行三个数 a、b、c,表示路径为a到b、权值为c的盘子,其中0 ≤ c ≤ 10^9,a不等于b。
接下来Q行,每行三个数 u、v、k,表示路径为u到v的水果,其中u不等于v,你需要选择第k小的盘子,第k小一定存在。

输出描述:

对于每个果子,输出一行表示选择的盘子的权值。
示例1

输入

复制
10 10 10 
1 2 
2 3 
3 4 
4 5 
5 6 
6 7 
7 8 
8 9 
9 10 
3 2 217394434 
10 7 13022269 
6 7 283254485 
6 8 333042360 
4 6 442139372 
8 3 225045590 
10 4 922205209 
10 8 808296330 
9 2 486331361 
4 9 551176338 
1 8 5 
3 8 3 
3 8 4 
1 8 3 
4 8 1 
2 3 1 
2 3 1 
2 3 1 
2 4 1 
1 4 1

输出

复制
442139372
333042360
442139372
283254485
283254485
217394434
217394434
217394434
217394434
217394434

备注:

对于100%的数据,