题目: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
裸的LCA离线算法,存下来当模板用吧。思想就是,将所有的查询都先存起来,然后对树做一次dfs遍历,对每一次经过的节点进行染色,标记为未访问,正在访问,和已经访问完毕。可以很明显的发现如果当前点是一个查询的端点,那么如果另外一个端点正在访问,则当前点是另外一个端点的子节点,两者的LCA为另外一个端点,...
分类:
其他好文 时间:
2014-10-31 20:34:28
阅读次数:
217
之前就写的是离线算法。思路就是先序一遍树,记录层数,然后高效RMQ就好。ST和线段树都能过。以后有时间将之前的在线算法补上。#include using namespace std;#define MAXN 100005#define MAXM 105#define inf 0x7ffffffint...
分类:
其他好文 时间:
2014-10-29 01:41:39
阅读次数:
269
进程间通信一,管道,管道的限制:(1)半双工,数据只能在一个方向上流动(2)管道一般只在具有公共祖先的进程之间使用,通常一个管道由一个进程创建,然后该进程调用fork()函数,此后父子进程可以使用该管道管道的创建:[cpp]view plaincopy#includeintpipe(intfiled...
分类:
系统相关 时间:
2014-10-26 09:08:35
阅读次数:
289
题目来源:最近公共祖先·一时间限制:10000ms单点时限:1000ms内存限制:256MB题目描述小Ho最近发现了一个神奇的网站!虽然还不够像58同城那样神奇,但这个网站仍然让小Ho乐在其中,但这是为什么呢?“为什么呢?”小Hi如是问道,在他的观察中小Ho已经沉迷这个网站一周之久了,甚至连他心爱的...
分类:
其他好文 时间:
2014-10-22 08:44:53
阅读次数:
192