2011年9月16日

poj1330Nearest Common Ancestors LCA问题 dfs+rmq

摘要: 题目意思很简单就是求两个节点的LCA,这个问题可以转化为rmq问题,求区间的最小值。就是首先利用dfs遍历图的所有顶点并且每条边会遍历两次,这样遍历的顶点总共2*n-1个,依次将遍历的边存在数组e[i]中,并且记录每个顶点的深度,存入数组level[i]中,我们再开一个数组存每一个顶点首次出现的下标,记录在idx中,这样任意给出两个顶点,我们求出他们对应的下标x,y,然后根据level数组在区间[x,y]中找出深度最小的下标r,这个下标对应的e就是我们要求的节点。这个题目就是将LCA转化为在某段区间中找高度最小的那个顶点。代码如下:#include <iostream>#inclu 阅读全文

posted @ 2011-09-16 21:46 buptLizer 阅读(232) 评论(0) 推荐(0) 编辑

导航