1.2.3 图论最短公共祖先(LCA)
Bryce1010_贤哉回也
github: https://github.com/Bryce1010
\n
e-mail: bryceyx@gmail.com
展开
-
hdu2586 How far away ?
这个题目只要建立一个树,然后查询任意2个点之间的距离,没有更新操作,所以可以用LCA来做。 LCA就是寻找最近公共祖先,这有什么用呢? 这是因为有一个性质,假设B和C的最近公共祖先是A,那么对于整个树的根节点D, 都有:|BD|+|CD|-|AD|*2=|BC| 也就是说,只要事先求出所有点到D的距离dist(dist的大小为n), 然后对于输入的B和C,只需要求出最近公共祖先,即可...原创 2018-06-11 22:09:44 · 166 阅读 · 0 评论 -
POJ1470 LCA (Targan离线)
bryce1010模板 http://poj.org/problem?id=1470 /*伪代码 Tarjan(u)//marge和find为并查集合并函数和查找函数 { for each(u,v) //访问所有u子节点v { Tarjan(v); //继续往下遍历 marge(u,v); //合并v到u上 ...原创 2018-07-29 11:47:33 · 204 阅读 · 0 评论 -
hdu2586 LCA带边权的Targan算法
bryce1010模板 http://acm.hdu.edu.cn/showproblem.php?pid=2586 #include<bits/stdc++.h> using namespace std; #define ll long long const int MAXN=40010; const int MAXQ=40010; int n; //并查集部分 int F[...原创 2018-07-29 13:46:49 · 295 阅读 · 0 评论 -
【二分答案+LCA】The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online B.Red Black Tree
The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online B.Red Black Tree https://vjudge.net/problem/ZOJ-4048 1. 题意 一棵树有n个节点n-1条边,跟为1,有边权。m个节点是红色,其他是黑色。 有q此查询,每次查询有k个点组成的集合,设d[x]表示当前节点到最近红点父节点的距离。如果x是...原创 2018-09-19 15:04:09 · 266 阅读 · 0 评论