如題,給定一棵有根多叉樹,請求出指定兩個點直接最近的公共祖先。
第一行包含三個正整數 n,m,s,分別表示樹的結點個數、詢問的個數和樹根結點的序號。
接下來 n-1 行每行包含兩個正整數 x, yx,y,表示 x 結點和 y 結點之間有一條直接連線的邊(資料保證可以構成樹)。
接下來 m 行每行包含兩個正整數 a, b,表示詢問 a 結點和 b 結點的最近公共祖先。
輸出包含 m 行,每行包含乙個正整數,依次為每乙個詢問的結果。
554
3124
5114
2432
3512
45
441
44
lca模板題,不解釋
#include
#include
using
namespace std;
int n,m,s;
int tot,hd[
5000010];
int dep[
5000010
],f[
5000010][
20];struct abcb[
5000010];
void
add(
int x,
int y)
; hd[x]
=tot;
}int
lca(
int x,
int y)
if(x==y)
return x;
k=19
;while
(k>=0)
k--;}
return f[x][0
];}void
dfs(
int x,
int fa)
}int
main()
dfs(s,0)
;for
(int j=
1;j<
20;j++
)for
(int i=
1;i<=n;i++
) f[i]
[j]=f[f[i]
[j-1]]
[j-1];
while
(m--
)return0;
}
洛谷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,表示詢問...
洛谷 P3379 最近公共祖先(LCA) 模板
如題,給定一棵有根多叉樹,請求出指定兩個點直接最近的公共祖先。第一行包含三個正整數n m s,分別表示樹的結點個數 詢問的個數和樹根結點的序號。接下來n 1行每行包含兩個正整數x y,表示x結點和y結點之間有一條直接連線的邊 資料保證可以構成樹 接下來m行每行包含兩個正整數a b,表示詢問a結點和b...