本题也是找LCA的题目,不过要求多次查询,一般的暴力查询就必然超时了,故此必须使用更高级的方法,这里使用Tarjan算法。
本题处理Tarjan算法,似乎输入处理也挺麻烦的。
注意: 因为查询的数据会极大,故此使用一个数组记录所有查询数据就会超时的。我就载在这里了。查了好久才想到这点。因为我使用了一个vector容器记录了查询数据,故此每次都循环这组这么大的数据,就超时了。----解决办法:使用一个vector
quest来记录查询数组,这样每次都只需要循环某节点的邻接查询点就可以了,数据量是很小的。
有些说法没道理的:比如:结尾是否有空格?没有!
我使用了按权值查询并查集的优化,实验证明:没有优化效果。
使用map容器记录结果,好像没有加速,不过这样的代码更加成熟。
其他就是Tarjan算法了,网上也不少解说的了,结合代码学习,这个算法也不难。
#include
#include
#include
#include
#include