随笔分类 -  ACM-LCA(最近公共祖先)

摘要:题意:N个点,形成一棵树,边有长度。M个询问,每个询问(a,b),询问a和b的距离思路:模板题,看代码。DFS预处理算出每个结点离根结点的距离。注意:qhead[maxn],而不是qhead[maxm]。输出用%I64d,不要用%lld。C++ RE后 尝试用 G++交。代码:struct node... 阅读全文
posted @ 2014-10-04 21:53 fish7 阅读(319) 评论(0) 推荐(0)
摘要:题意:N个点,构成一棵树。给出这棵树的结构。M条边,(a1,b1)...(am,bm),代表给树的这些点对连上边。这样就形成了有很多环的一个新”树“。现在要求你在原树中断一条边,在M条边中断一条边,使得新”树“被分成两个部分。问有多少种方案。思路:连上某条新边(a,b),则必定形成一个环。环的路径是... 阅读全文
posted @ 2014-10-04 20:35 fish7 阅读(420) 评论(0) 推荐(0)
摘要:/* *算法引入: *树上两点的最近公共祖先; *对于有根树的两个结点u,v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u,v的祖先且x的深度尽可能大; *对于x来说,从u到v的路径一定经过点x; * *算法思想: *Tarjan_LCA离线算法; *Tarjan算法基... 阅读全文
posted @ 2014-10-04 15:38 fish7 阅读(1023) 评论(0) 推荐(0)
摘要:题意:给出一棵树的结构。给出两个点X和Y,求它俩的LCA。思路:只需求两个点的LCA,用了两种方法,一种离线tarjan,一种直接搞。看代码。代码:方法一:直接搞。int const maxn = 10005;int T,n,a,b;int fa[maxn];int X,Y;int main(){ ... 阅读全文
posted @ 2014-10-04 15:12 fish7 阅读(179) 评论(0) 推荐(0)