摘要: 题意就是找森林里的LCA,构图完成了这个题基本就没问题了。已知的是所给的图上是可能有环的。那么可以对这些环进行类似缩点的操作(当然不是tarjan),设一个虚拟根0点,链接环上的每一个点。对于不在环上的点直接加无向边建树就行。预处理出每个环包含哪些点,每个环中点的顺序(环是有方向的)对得到的树进行LCA到RMQ的转化,同时记录当前点到0点的距离,O(nlogn)的时间预处理,O(1)的时间求LCA。分几种情况:1、两点的LCA是环上的同一个点,这个直接出结果(根据距离)2、两点的LCA在同一个环的不同点上,这个要根据环的方向判断一下优弧劣弧。3、两点的LCA不再同一环上。直接输出-1 -1;详 阅读全文
posted @ 2012-09-20 21:21 AC_Von 阅读(487) 评论(0) 推荐(0) 编辑