Problem
【ONTAK2010】Peaks
Description
在有座山峰,每座山峰有他的高度。
有些山峰之间有双向道路相连,共条路径,每条路径有一个困难值,这个值越大表示越难走。
现在有组询问,每组询问询问从点开始只经过困难值小于等于的路径所能到达的山峰中第高的山峰,如果无解输出。
Input
第一行三个数。
第二行个数,第个数为。
接下来行,每行个数,表示从到有一条困难值为的双向路径。
接下来行,每行三个数,表示一组询问。
Output
Sample Input
1 | 10 11 4 |
Sample Output
1 | 6 |
HINT
,,
Source
By Sbullet
标签:并查集
线段树合并
Solution
离线询问,按从小到大排序,发现是裸的线段树合并。
将条边按照边权从小到大排序,按从小到大处理询问,每次只需要加边而不需要删边。这时就和BZOJ2733【HNOI2012】永无乡一样了。用并查集维护联通关系,每个连通块内用权值线段树维护。若某条边使得两个块不联通的块联通,则合并连个块的线段树,查询则直接在块内查询即可。
其实可以在线做,详见BZOJ3551【ONTAK2010】Peaks加强版。
Code
1 |
|