洛谷 P3379 LCA 模板題

2021-10-04 13:02:35 字數 1188 閱讀 2679

傳送門

什麼是lca??

具體請檢視下面鏈結

**這是一道模板題。

卡vector,卡cin.

所以老實點用鄰接表和scanf把~

上面說的很詳細啦~

用的是倍增。暴力的優化。

鬼知道我理解倍增理解了一下午emmm。

(主要是儲存和優化位置)

然後!!自信滿滿以為理解了。

開始寫部落格了。。

發現。似乎???又什麼都不會了。

我的內心:???

後來又去各種畫圖理解了一遍~呼,終於完成了一篇部落格。

理解之後就很簡單啦!二進位制的運用~

話不多說。

**部分:

#include

using

namespace std;

const

int n =

5e5+10;

struct node

edge[n <<1]

;int head[n]

;int n, m, s;

int cnt;

int lg[n]

;int dep[n]

;int fa[n][25

];void

add(

int x,

int y)

void

dfs(

int now,

int fath)

for(

int i = head[now]

; i; i = edge[i]

.next)}}

intlca

(int x,

int y)

while

(dep[x]

> dep[y])if

(x == y)

for(

int k = lg[dep[x]]-

1; k >=

0; k--)}

return fa[x][0

];}int

main()

for(

int i =

1; i <= n; i++

)dfs

(s,0);

for(

int i =

1; i <= m; i++

)return0;

}

洛谷 P3379 LCA (樹鏈剖分法)

給出乙個n節點,s為根的樹,m次詢問某兩個節點間的lca n 500000,m 500000 lca的方法一般有倍增,tarjan,樹鏈剖分,這裡主要介紹樹鏈剖分 這個題用vector的樹鏈剖分會超時 常數原因 vector的其他方法,開o2貌似能過 size u 以u為根節點的子樹的節點數 dep...

洛谷P3379 模板 最近公共祖先(LCA)

題目描述 如題,給定一棵有根多叉樹,請求出指定兩個點直接最近的公共祖先。輸入輸出格式 輸入格式 第一行包含三個正整數n m s,分別表示樹的結點個數 詢問的個數和樹根結點的序號。接下來n 1行每行包含兩個正整數x y,表示x結點和y結點之間有一條直接連線的邊 資料保證可以構成樹 接下來m行每行包含兩...

洛谷 P3379 模板 最近公共祖先(LCA)

如題,給定一棵有根多叉樹,請求出指定兩個點直接最近的公共祖先。輸入格式 第一行包含三個正整數n m s,分別表示樹的結點個數 詢問的個數和樹根結點的序號。接下來n 1行每行包含兩個正整數x y,表示x結點和y結點之間有一條直接連線的邊 資料保證可以構成樹 接下來m行每行包含兩個正整數a b,表示詢問...