LCA演算法 離線做法 tanjar

2021-08-14 19:24:33 字數 545 閱讀 9891

首先,學習lca(tanjar)演算法~~推薦兩篇部落格,結合起來看很容易理解&.&

第一篇:lca演算法(較詳細)

第二篇:lca(思想部分較好)

例題:codevs 2370 小機房的樹 點我點我~

#includeusing namespace std;

const int max_n = 1e5+9;

const int inf = -1;

struct node

};vectorvec[max_n]; // 建樹的邊

vectorq[max_n]; // 查詢的點,這裡val代表答案輸出的位置

int vis[max_n],dis[max_n],father[max_n],output[max_n];

void init()

{ for(int i=0;i>n)

{init();

for(int i=1;i>m;

for(int i=0;ihdu 2586 how far way? 點我點我~~

兩道題基本一樣,附上第一題**~

LCA離線演算法tarjan

lca演算法 lca least common ancestor 是指在一棵樹中,距離兩個點最近的兩者的公共節點。也就是說,在兩個點通往根的道路上,肯定會有公共的節點,我們就是要求找到公共的節點中,深度盡量深的點。還可以表示成另一種說法,就是如果把樹看成是乙個圖,這找到這兩個點中的最短距離。本文先介...

LCA的離線演算法

lca least common ancestor 顧名思義,是指在一棵樹中,距離兩個點最近的兩者的公共節點。也就是說,在兩個點通往根的道路上,肯定會有公共的節點,我們就是要求找到公共的節點中深度盡量深的點。還可以表示成另一種說法,就是如果把樹看成是乙個圖,這找到這兩個點中的最短距離。tarjan作...

LCA 離線tarjan演算法

對於最近公共祖先問題,我們先來看這樣乙個性質,當兩個節點 u,v 的最近公共祖先是x時,那麼我們可以確定的說,當進行後序遍歷的時候,必然先訪問完x的所有子樹,然後才會返回到x所在的節點。這個性質就是我們使用tarjan演算法解決最近公共祖先問題的核心思想。同時我們會想這個怎麼能夠保證是最近的公共祖先...