#1062 : 最近公共祖先·一时间限制:10000ms单点时限:1000ms内存限制:256MB描述小Ho最近发现了一个神奇的网站!虽然还不够像58同城那样神奇,但这个网站仍然让小Ho乐在其中,但这是为什么呢?“为什么呢?”小Hi如是问道,在他的观察中小Ho已经沉迷这个网站一周之久了,甚至连他心爱...
分类:
其他好文 时间:
2015-02-07 10:18:58
阅读次数:
157
#1062 : 最近公共祖先·一
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
小Ho最近发现了一个神奇的网站!虽然还不够像58同城那样神奇,但这个网站仍然让小Ho乐在其中,但这是为什么呢?
“为什么呢?”小Hi如是问道,在他的观察中小Ho已经沉迷这个网站一周之久了,甚至连他心爱的树玩具都弃置一边。
“嘿嘿,小H...
分类:
其他好文 时间:
2015-02-05 18:33:50
阅读次数:
264
水题目。直接上代码了。
VIEW CODE
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const int mmax= 10010;
const int mod=1...
分类:
其他好文 时间:
2015-02-03 17:25:37
阅读次数:
150
,只要知道dis[i][j]=dis[i][root]+dis[j][root]-2*dis[Lca(i,j)][root]. 其中root为树的根节点,LCA(i,j)为i,j的最近公共祖先。 所以我们先把所有的询问储存下来,然后离线直接查询。复杂度是o(n+q)的。
VIE#include
#include
#include
#include
#include
#include
#inc...
分类:
其他好文 时间:
2015-02-03 17:17:34
阅读次数:
160
题意:给定一棵树,查询时给定两个点,求出两个点的距离。
暴力做肯定超时的。我的做法是采用lca(最近公共祖先)的离线算法,即tarjan算法(据说Tarjan提出了很多算法,可能还有很多tarjan算法),算法里用到了并查集。在输入完所有查询之后,在求出答案。tarjan算法的做法是:一开始vis数组初始化为0,从树根开始递归往下对点进行染色,刚到一个点的时候将vis取为-1,在继续递归...
分类:
编程语言 时间:
2015-01-24 09:02:19
阅读次数:
260
How far away ?
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 6309 Accepted Submission(s): 2368
Problem Description
There are n...
分类:
其他好文 时间:
2015-01-24 01:39:28
阅读次数:
221
实现的功能如下——在一个N个点的无环图中,共有N-1条边,M个访问中每次询问两个点的距离原理——既然N个点,N-1条边,则说明这是一棵树,而且联通。所以以1为根节点DFS建树,然后通过求两点的LCA的方式,先求得最近公共祖先,然后再通过深度来求出两点距离 1 type 2 point=^...
分类:
编程语言 时间:
2015-01-20 00:53:40
阅读次数:
324
题目大意:一个村庄有N个房子和一些双向的路,人们总是喜欢问"A到B有多远呢",一般是很难
回答的,毕竟有很多种答案。所幸,答案是唯一的,A到B总是有唯一的路径到达。第一行是T组
数据。每组数据第一行是N个房子和M条询问。接下来N-1行每行是u v w,表示从房子u到房子v
的距离是w。接下来是M行询问。每行是u v,表示询问房子u到房子v的距离,最后输出所有的询
问结果。
思路:整个村庄房子和路可看成一棵树,设根结点为房子1,询问u到房子v的距离,其实就是求u
到根结点的距离 + v到根结点的距离 - 2*...
分类:
编程语言 时间:
2014-12-31 22:54:13
阅读次数:
254
题目大意:给你一棵树,有N个结点,N-1条边。最后询问距离树上两个点(u,v)最近的
公共祖先是多少。
比如上图:6和16的最近公共祖先就是4;14和1的最近公共祖先就是1。
思路:对于最近公共祖先LCA问题,最经典的离线算法是Tarjan-LCA算法。用链式前向
星存储图和询问,Head[]和Edges[]表示图(树),QHead[]和QEdges[]表示询问。集合
的操作用并查集实现。这道题里用了indegree[]数组来存储结点的入度,找到入度为0的
根结点root,调用LCA(root)。
Tarj...
分类:
编程语言 时间:
2014-12-31 21:35:07
阅读次数:
161
题目大意:John是一个农场主,他的牛很懒,拒绝按照John选的路走。John不得不找一条
最短的路。这道题的输入前半部分和POJ1984"Navigation Nightmare"相同。在每组数据
之后是一个整数K,接下来K行是询问(u,v)的曼哈顿距离(u,v是农场编号)。最后输出所有
询问结果。
POJ1984链接:http://poj.org/problem?id=1984
思路:本题输入有些特殊,给出的是某点在某点的某个方向(东西南北)有多远。由于输入数
据比较特殊。全部是有向边,且构不成回路,所...
分类:
编程语言 时间:
2014-12-31 21:31:53
阅读次数:
174