234
правки
Изменения
→LCA
===LCA===
C помощью link-cut-дерева можно найти наименьшего общего предка:
'''tree'''lca(u: '''tree''', v: '''tree'''):
expose(u)
expose(v)
'''return ''' pathparent(splay(u))
Первый вызов <tex>expose</tex> построит путь от <tex>u</tex> до корня. Второй пересечет этот путь в наименьшем общем предке, поэтому в splay-дереве, которому принадлежит <tex>u</tex>, хранится указатель <tex>pathparent</tex> на <tex>lca</tex>, после <tex>splay(u)</tex> он будет находиться в <tex>u</tex>.