Problem
【AMPPZ2014】Petrol
Description
给定一个个点、条边的带权无向图,其中有个点是加油站。
每辆车都有一个油量上限,即每次行走距离不能超过,但在加油站可以补满。
次询问,每次给出,表示出发点是,终点是,油量上限为,且保证点和点都是加油站,请回答能否从走到。
Input
第一行包含三个正整数(,),表示点数、加油站数和边数。
第二行包含个互不相同的正整数,表示每个加油站。
接下来行,每行三个正整数,,(,,),表示和之间有一条长度为的双向边。
接下来一行包含一个正整数(),表示询问数。
接下来行,每行包含三个正整数(,,),表示一个询问。
Output
输出行。第行输出第个询问的答案,如果可行,则输出,否则输出。
Sample Input
1 | 6 4 5 |
Sample Output
1 | TAK |
标签:最短路
MST
Solution
一道精妙的题。
首先考虑走到一个点,先去离它最近的加油站,回来后再去下一个点肯定比直接去要优。
于是用多源最短路预处理出每个点到它最近的加油站的距离,随后给每一条边分别加上它的起点和终点离它们最近加油站的距离。
对于询问,先离线下来按值排序,按照边权加入边,用并查集维护。对于每个询问,先将比它的值小的所有边都加入,再询问起点和终点是否联通即可。
Code
1 |
|