
图论 - LCA
TaoSama
The ACM road begins.
展开
-
Gym 100685G Gadget Hackwrench (LCA)
题意: 给一个V≤105有向的,但是忽略方向是一颗树的「树」,每次查询u→v是否可达,Q≤105给一个 V≤10^5 有向的,但是忽略方向是一颗树的「树」,每次查询 u\to v 是否可达,Q≤10^5分析: 随便设一个点当根,那么边有两种:「向上」和「向下」的。我们可以预处理dp[u] dp[u] 表示u u 到根的路径上「向上」「向下」的边有多少条,有了这个,我们可以 O(1)O(1)原创 2015-10-05 21:18:04 · 801 阅读 · 0 评论 -
SPOJ QTREE2 Query on a tree II(LCA)
题意: 给定N≤104的一棵树,现有一些查询给定N\le10^4的一棵树, 现有一些查询 DIST a b 询问(a,b)的距离DIST\ a\ b\ 询问(a,b)的距离 KTH a b k 询问(a,b)路径上的第k个点KTH\ a\ b\ k\ 询问(a,b)路径上的第k个点分析: DIST询问LCA直接搞,第二个倍增一下搞就好了DIST询问LCA直接搞, 第二个倍增一下原创 2016-01-28 00:04:29 · 394 阅读 · 0 评论 -
UVALive 4960 Sensor network(MST+LCA)
题意: 给定N≤350的一个图,求所有MST中最大边−最小边的最小值给定N\le350的一个图, 求所有MST中最大边-最小边的最小值分析: 对边排序后,一条一条的加边,成环了就删去环上的最小边对边排序后, 一条一条的加边, 成环了就删去环上的最小边 因为加进来的边一定是最大边,减去新的最小边不断更新答案即可因为加进来的边一定是最大边,减去新的最小边不断更新答案即可代码:////原创 2016-01-28 00:00:14 · 403 阅读 · 0 评论 -
POJ 3728 The merchant(dp+LCA+倍增)
题意: 给定N≤5×104的一棵树,Q≤5×104次查询给定N\le5\times10^4的一棵树, Q\le5\times10^4次查询 每个点都有一个价格,问(u,v)路径获得的最大利润(某个点买入某个点卖出),无利润输出0每个点都有一个价格, 问(u,v)路径获得的最大利润(某个点买入某个点卖出),无利润输出0分析: 显然有三种情况,u→lca,lca→v,u→v获得最大利润显原创 2016-01-27 23:51:13 · 513 阅读 · 0 评论 -
UVA 11354 Bond(MST+LCA)
题意: 给定N≤5×104,M≤105的图,Q≤5×104次询问给定N\le5\times10^4,M\le10^5的图, Q\le5\times10^4次询问 (u,v)找到一条路径使得最大边权最小(u,v)找到一条路径使得最大边权最小分析: 找最小,显然先搞一遍MST找最小, 显然先搞一遍MST 求(u,v)树上2点间的最大边,倍增搞一下就可以了,当然树剖也是可以的求(u,原创 2016-01-27 23:30:11 · 361 阅读 · 0 评论 -
POJ 3417 Network(dp+LCA)
题意: 给定N≤105的一棵树,新添加M≤105条边给定N\le 10^5的一棵树, 新添加M\le10^5条边 现在每次可以毁掉2条边,一条必须是树边,一条是新边,问有多少种方法使得树不连通现在每次可以毁掉2条边, 一条必须是树边,一条是新边, 问有多少种方法使得树不连通分析: 我们知道加入新边必定会成环,可以发现我们知道加入新边必定会成环, 可以发现 对于被环覆盖2次及以上原创 2016-01-27 23:23:09 · 314 阅读 · 0 评论 -
HDU 2874 Connections between cities(LCA)
题意: 给定N≤104的森林,Q≤104次询问给定N\le10^4的森林, Q\le10^4次询问 查询2点之间距离,不连通输出Not connected查询2点之间距离, 不连通输出Not\ connected分析: 搜一遍森林,给连通分量编号,然后就是lca模版题了搜一遍森林, 给连通分量编号, 然后就是lca模版题了代码://// Created by TaoSama o原创 2016-01-27 17:24:11 · 332 阅读 · 0 评论 -
POJ 2763 Housewife Wind(LCA)
题意: 给定N≤105的一棵树,Q≤105次询问,给定起始点s给定N\le 10^5的一棵树, Q\le 10^5次询问, 给定起始点s 0. u 从当前点s到u的距离0.\ u\ 从当前点s到u的距离 1. i w 将第i条边的权变为w1.\ i\ w\ 将第i条边的权变为w分析: 动态求树上2点的距离,根据RMQ求LCA的办法,观察欧拉序列,发现一进一出动态求树上2点的距离原创 2016-01-27 17:20:43 · 349 阅读 · 0 评论 -
HDU 2586 How far away ?(LCA)
题意: 给定N≤4×104的一棵树,Q≤200询问树上2点之间距离给定N\le 4\times 10^4的一棵树, Q\le200询问树上2点之间距离分析: 树上2点之间距离dis(u,v)=dis(u)+dis(v)−2∗dis(lca(u,v))树上2点之间距离dis(u,v)=dis(u)+dis(v)−2∗dis(lca(u,v)) 剩下就是lca模版题剩下就是lca模版题原创 2016-01-27 17:02:07 · 243 阅读 · 0 评论 -
POJ 1986 Distance Queries(LCA)
题意: 给定的一棵树,边数卖萌的,(u,v,c,d),d方向也是卖萌的给定的一棵树, 边数卖萌的, (u,v,c,d), d方向也是卖萌的 K≤104次询问,dis(u,v)K\le10^4次询问, dis(u,v)分析: 树上2点之间距离dis(u,v)=dis(u)+dis(v)−2∗dis(lca(u,v))树上2点之间距离dis(u,v)=dis(u)+dis(v)-2*di原创 2016-01-27 16:59:40 · 289 阅读 · 0 评论 -
POJ 1470 Closest Common Ancestors(LCA)
题意: 给定奇怪的读入方式的N≤900的一颗树,给定奇怪读入方式的一些询问给定奇怪的读入方式的N\le900的一颗树, 给定奇怪读入方式的一些询问 求询问结果,输出形式⇒点:当作LCA的次数求询问结果, 输出形式\Rightarrow 点:当作LCA的次数分析: scanf中可以使用空格来吸取空白scanf中可以使用空格来吸取空白 读入了之后就是模版题了,这里用的tarjan读原创 2016-01-27 16:55:29 · 296 阅读 · 0 评论 -
POJ 1330 Nearest Common Ancestors(LCA)
题意: 给定N≤104的一棵树,给定一个询问,求LCA给定N\le10^4的一棵树, 给定一个询问, 求LCA分析: 模版题模版题代码://// Created by TaoSama on 2015-11-08// Copyright (c) 2015 TaoSama. All rights reserved.////#pragma comment(linker, "/STA原创 2016-01-27 16:51:25 · 229 阅读 · 0 评论 -
Codeforces Round #326 (Div. 2) E. Duff in the Army(LCA+倍增法)
题意: 给定N≤105的一棵树,M≤105个人,Q≤105次询问给定N\le 10^5的一棵树, M\le 10^5个人, Q\le 10^5次询问 每个人都在某个节点,一个节点可以有不定个数个人每个人都在某个节点, 一个节点可以有不定个数个人 询问(u,v)路径上前a个编号的人是谁,a≤10询问(u,v)路径上前a个编号的人是谁, a\le 10分析: 倍增法,维护have[原创 2016-01-26 19:00:38 · 621 阅读 · 0 评论 -
UVALive 6837 There is No Alternative (MST + LCA)
题意: 求使图连通不得不建造的边的个数和比边权和求使图连通不得不建造的边的个数和比边权和分析: MST得到所有的可能必须建造的边,枚举所有不在MST的(u,v)删去MST上权值相同的即为alternative edgeMST得到所有的可能必须建造的边, 枚举所有不在MST的(u,v)删去MST上权值相同的即为alternative\ edge代码://// Created by Ta原创 2015-12-06 04:10:12 · 548 阅读 · 0 评论 -
POJ 3694 Network (tarjan bcc + LCA)
题意: 给定无向图,q次加边操作,问加边后还有多少个桥给定无向图, q次加边操作, 问加边后还有多少个桥分析: tarjan bcc来一发,求出初始桥数,并用并查集维护bcc内的点tarjan\ bcc来一发, 求出初始桥数, 并用并查集维护bcc内的点 相当于缩点了,隐式建图的是一个DAG,接下来只要加边就会形成环(bcc)相当于缩点了, 隐式建图的是一个DAG, 接下来只要加边就原创 2015-11-22 02:01:19 · 518 阅读 · 0 评论 -
UESTC 92 Journey (LCA)
题意: 给出N<=105N<=10^5的一棵树, 和一条新建的边, Q<=105Q<=10^5询问两点间节省了多少时间分析: 知道dis[u][v]=dis[u]+dis[v]−2∗dis[lca(u,v)]dis[u][v] = dis[u] + dis[v] - 2 * dis[lca(u,v)]就好做辣代码://// Created by TaoSama on 2015-09原创 2015-10-05 21:26:42 · 525 阅读 · 0 评论 -
LCA小结
LCA小结 A Summary for LCALCA小结\ A\ Summary\ for\ LCAI.LCAI. LCA什么是LCA? Lowest Common Ancestor, 指的是树上两点的最近公共祖先。 有了它, 我们可以高效地求解树上两点间的距离、最大权值边等信息。LCA的时间复杂度 暴力 O(n+m+qn)O(n+m+qn)倍增法 O(n+m+nlogn+qlogn)O原创 2016-01-28 13:16:32 · 781 阅读 · 0 评论