思路,先判断入口是否有非法输入。 1 如果某一个root==p || root == q,那么LCA肯定是root(因为是top down,LCA肯定在root所囊括的树上,而root又是p q其中一个节点了,那么另外一个节点肯定在root之下,那么root就是LCA),那么返回root 2 如果r ...
分类:
其他好文 时间:
2016-06-01 06:49:14
阅读次数:
141
这个题目网上有很多答案,代码也很像,不排除我的。大家的思路应该都是taijan求出割边,然后找两个点的LCA(最近公共祖先),这两个点和LCA以及其他点构成了一个环,我们判断这个环上的割边有几条,我们的答案就少几个。 有人问,这个题重边怎么办呢,重边肯定不是桥啊。额……对于这个我只能说,这个题的原始 ...
分类:
编程语言 时间:
2016-05-31 22:10:09
阅读次数:
196
题目 给出一棵家族树,树上的节点可以由名字唯一标识。给出若干个查询,查询的内容为两个名字,结果为两个名字的最近公共祖先。 题目链接: 最近公共祖先 分析 在线的RMQ + LCA 算法,先用dfs将树遍历一遍,每次到达一个节点(无论是从父节点到达还是从它的某个子节点返回),都记录下来该节点id,同时 ...
分类:
其他好文 时间:
2016-05-30 22:54:15
阅读次数:
203
给出一棵家谱树,树中的节点都有一个名字,保证每个名字都是唯一的,然后进行若干次查询,找出两个名字的最近公共祖先。 题目链接最近公共祖先 分析 数据量大,根据题目提示,采用Tarjan + 并查集算法,进行离线LCA查询操作。即先将所有的查询存储下来,然后统一DFS遍历一遍家族树,在遍历的过程中对遍历 ...
分类:
其他好文 时间:
2016-05-29 19:58:52
阅读次数:
243
今天拿了这道题目练练手,感觉自己代码能力又增强了不少; 我的思路跟别人可能不一样。 首先我们很容易就能看出,我们需要的边就是最小生成树算法kruskal算法求出来的边,其余的边都可以删掉,于是就有了这个kruskal选边建图的过程。 做到这里,有人可能觉得接下来一个LCA接着就可以AC了,不过蒟蒻认 ...
分类:
其他好文 时间:
2016-05-29 16:46:27
阅读次数:
219
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5293 题意: 给你一些链,每条链都有自己的价值,求不相交不重合的链能够组成的最大价值。 题解: 树形dp, 对于每条链u,v,w,我们只在lca(u,v)的顶点上处理它 让dp[i]表示以i为根的指数 ...
分类:
编程语言 时间:
2016-05-29 16:23:47
阅读次数:
198
1.结构体的一些使用 以前用结构体,定义函数都是裸的 后来看到各位神犇都是这样装逼的 2.链表的使用 以前老师教我们vector大法,从此稀疏图空间再也不用怕. 后来被一道POJ的LCA题目(Housewife Wind (POJ No.2763))给搞了,从此用上静态链表,时间也不用怕 3.uni ...
分类:
其他好文 时间:
2016-05-29 13:36:10
阅读次数:
135
链接:http://poj.org/problem?id=3694 题意:给定一个有向连通图,每次增加一条边,求剩下的桥的数量。 思路: 给定一个无向连通图,添加一条u->v的边,求此边对图剩余的桥的数量的影响: 若u,v在同一个强联通分量中,则是否添加无影响。否则从u,v的LCA到u,v的边上所有 ...
分类:
移动开发 时间:
2016-05-28 17:40:33
阅读次数:
233
此题代码量较大。。但是打起来很爽 原本不用lca做一直wa不知道为什么。。 后来改lca重打了一遍= =结果一遍就AC了orz 题目比较裸,也挺容易打,主要是因为思路可以比较清晰 另:加读入优化比没加快了1.3s。。 ...
分类:
其他好文 时间:
2016-05-28 12:49:37
阅读次数:
187