题意:给定n个点,下面n-1行 u , v ,dis 表示一条无向边和边权值,这里给了一颗无向树 下面m表示m个询问,问 u v n 三点最短距离 典型的LCA转RMQ #include<stdio.h> #include<string.h> #include<math.h> #define N 100000 #define INF 1<<29 #define Logo 17 using namespace std; inline int Min(int a…
一.什么是LCA? LCA:Least Common Ancestors(最近公共祖先),对于一棵有根树T的任意两个节点u,v,求出LCA(T, u, v),即离跟最远的节点x,使得x同时是u和v的祖先. 二.算法分类 求LCA的算法很多,按照是否在线可以分为在线算法和离线算法. 在线算法:用比较长的时间做预处理,但是等信息充足以后每次回答询问只需要用比较少的时间. 离线算法:先把所有的询问读入,然后一起把所有询问回答完成,不是本文所讲,Click here 三.在线算法 (…
今天看了RMQ问题 ST的实质是动归 于是我来回顾一下LCA(的各种写法) 因为每次考试发现自己连LCA都写不好 费时 First of all, RMQ板子: [一维] #include<bits/stdc++.h> using namespace std; const int N = 50010; int n, q, a, b; int c[N]; int dpmn[N][20], dpmx[N][20]; template <typename T> T read(){ T N…