對于修改操作,不一定需要使用LCA
直接貼別人的話:
http://blog.sina.com.cn/s/blog_6974c8b20100zc61.html
修改操作:例如將u到v的路徑上每條邊的權值都加上某值x。
一般人需要先求LCA,然后慢慢修改u、v到公共祖先的邊。而高手就不需要了。
記f1 = top[u],f2 = top[v]。
當f1 <> f2時:不妨設dep[f1] >= dep[f2],那么就更新u到f1的父邊的權值(logn),并使u = fa[f1]。
當f1 = f2時:u與v在同一條重鏈上,若u與v不是同一點,就更新u到v路徑上的邊的權值(logn),否則修改完成;
重復上述過程,直到修改完成
比使用LCA快