题意:根目录能一次到达其任意子目录,子目录返回上一层目录需要一次,给出目录关系,问从某个目录到某个目录最少要多少步。操作数 ,就是起点到最近公共祖先的距离。然后讨论下,如果最近公共祖先等于终点,那么答案就是起点到祖先的高度差 ,否则就是高度差加一 。#include#include#include#...
分类:
其他好文 时间:
2014-11-08 16:42:03
阅读次数:
239
求LCA(最近公共祖先)的算法有好多,按在线和离线...
分类:
编程语言 时间:
2014-11-07 09:57:24
阅读次数:
198
题目:ZOJ Problem Set - 3195 Design the city
题意:给出一个图,求三点的连起来的距离。
分析:分别求出三点中任意两点的距离 / 2 = ans
AC代码:
#include
#include
#include
#include
using namespace std;
#define N 50010
#define M...
分类:
其他好文 时间:
2014-11-06 20:09:26
阅读次数:
129
题目:poj 1470 Closest Common Ancestors
题意:给出一个树,一些询问。求LCA的个数、
分析:很简单的模板题目,但是模板不够优秀,一直wa...RE,各种错误一下午,终于发现自己模板的漏洞了。
AC代码:
#include
#include
#include
#include
using namespace std;
#def...
分类:
其他好文 时间:
2014-11-06 20:05:07
阅读次数:
210
题目:hdoj 2874 Connections between cities
题意:战争过后,一些城市毁坏了。意思图不连通,让你求任意两点的距离、
分析:很明显求LCA
但是图不连通,所以我们Tarjan的时候要对每个点进行。然后标记即可。
另外,这个题目卡vector,看来以后要学着用数组模拟邻接表了。
AC代码:
#include
#include
#...
分类:
其他好文 时间:
2014-11-06 17:30:51
阅读次数:
189
在线块状树LCA模板。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define N 30001 7 vectorG[N]; 8 typedef vector::iterator ITER; 9 int ...
分类:
其他好文 时间:
2014-11-06 14:17:54
阅读次数:
482
题目:hdoj 2586 How far away ?
题意:给出一个有权树,求任意两点的之间的距离。
分析:思想就是以一个点 root 作为跟变成有根数,然后深搜处理处所有点到跟的距离。求要求的两个点的LCA(最近公共祖先),
然后ans = dis【x】 + dis【y】 - 2 * dis【LCA(x,y)】,可以画图分析一下就知道。
求LCA我用的是Tarj...
分类:
其他好文 时间:
2014-11-06 11:01:48
阅读次数:
181
先求一个节点的所有先人,然后从另外一个节点开始向上找,找到第一个共同的先人就是最近公共祖先。#include#include#include#includeusing namespace std;int fathe[1222];int color[122];int father[1222];int ...
分类:
其他好文 时间:
2014-11-04 08:06:41
阅读次数:
118
这个要好写点,就是dfs这棵树,将每个节点进入 和出去的位置都记录下来,然后找 所要求得两个点最后出现的位置之间的最小值 所对应的点,就是他们的最近公共祖先。#include#include#include#include#includeusing namespace std;const int m...
分类:
其他好文 时间:
2014-11-04 08:05:23
阅读次数:
202
0.1就是0.1……弱的不行……只是暂时存一下为以后高大上的正解作铺垫Q:LCA都不会你学什么OI?A:我学不了OI了我要滚粗……适当解释:第一行输入点数n以及两个要查询的点q1,q2第二行输入每个点父亲father[i]一行输出ans==最近公共祖先……不会倍增……写了个看起来是正解其实是暴力的东...
分类:
其他好文 时间:
2014-11-01 00:56:44
阅读次数:
268