bzoj#P4009. [HNOI2015]接水果

[HNOI2015]接水果

题目描述

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

首先有一个地图,是一棵由 nn 个顶点,n1n-1 条边组成的树。

这颗树上有 pp 个盘子,每个盘子实际上是一条路径,并且每个盘子还有一个权值。第 ii 个盘子就是顶点 aia_i 到顶点 bib_i 的路径(由于是树,所以从 aia_ibib_i 的路径是唯一的),权值为 cic_i

接下来依次会有 qq 个水果掉下来,每个水果本质上也是一条路径,第 ii 个水果是从顶点 uiu_i 到顶点 viv_i 的路径。

幽香每次需要选择一个盘子去接当前的水果:一个盘子能接住一个水果,当且仅当盘子的路径是水果的路径的子路径。这里规定:从 aabb 的路径与从 bbaa 的路径是同一条路径。

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

输入格式

第一行三个数 nnppqq,表示树的大小和盘子的个数和水果的个数。

接下来 n1n-1 行,每行两个数 a,ba,b,表示树上的 aabb 之间有一条边。树中顶点按 11nn 标号。

接下来 pp 行,每行三个数 a,b,ca,b,c,表示路径为 aabb、权值为 cc 的盘子,其中 aba \neq b

接下来 qq 行,每行三个数 u,v,ku,v,k,表示路径为 uuvv 的水果,其中 uvu \neq v,你需要选择第 kk 小的盘子,第 kk 小一定存在。

输出格式

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

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%100\% 的数据,1n,p,q4×104,0c1091\leq n,p,q \leq4\times 10^4, 0 \le c \le 10^9