摘要:
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586【题意】 给出一个N 个和N-1条边的连通图,询问任意两点间的距离。N 3 #include 4 #include 5 #include 6 using namespace std; 7 int n,m; 8 struct edge 9 { 10 int d,v,next; 11 edge(){} 12 edge(int _d,int _v,int _next) 13 { 14 d=_d;v=_v;next=_next; 15 ... 阅读全文
摘要:
【简介】 LCA(T,u,v):在有根树T中,询问一个距离根最远的结点x,使得x同时为结点u、v的祖先。 RMQ(A,i,j):对于线性序列A中,询问区间[i,j]上的最值。见我的博客---RMQ ---- ST(Sparse Table)算法。【LCA算法】 解决LCA问题有多种算法,一种是离线的 Tarjan算法 ,还有在线的倍增法 ,还有就是转换为RMQ问题的在线算法。【LCA转化为RMQ】 (一)对有根树T进行DFS,将遍历到的结点按照顺序记下,我们将得到一个长度为2N – 1的序列,称之为T的欧拉序列F 。 (二)每个结点都在欧拉序列中出现,我们记录结点u在欧拉序列中第一次出现的位. 阅读全文