Изменения

Перейти к: навигация, поиск

Link-Cut Tree

72 байта убрано, 16:24, 23 марта 2016
expose(u)
'''function''' expose(u: '''tree'''):
splay(u)
v <tex>\leftarrow=</tex> u
'''while''' v <tex> \ne </tex> root
p <tex>\leftarrow=</tex> pathparent(v) <font color=green>//получаем указатель на ближайшую вершину пути, пересекающего путь от u до корня</font>
splay(p) <font color=green>//теперь в правом поддереве p находятся вершины пути, которые находятся ниже чем p в link-cut-дереве,</font>
parent(right(p)) <tex>\leftarrow=</tex> null <font color=green>//поэтому правое поддерево p делаем новым путем</font> pathparent(right(p)) <tex>\leftarrow=</tex> p right(p) <tex>\leftarrow=</tex> v <font color=green>//объединяем оставшийся и построенный пути</font>
<tex>\vartriangle</tex>w(v) -= <tex>\vartriangle</tex>w(p)
<tex>\vartriangle</tex>min(p) <tex>\leftarrow=</tex> min{0, <tex>\vartriangle</tex>min(left(p)) + <tex>\vartriangle</tex>w(left(p)), <tex>\vartriangle</tex>min(right(p)) + <tex>\vartriangle</tex>w(right(p))} pathparent(v) <tex>\leftarrow=</tex> null v <tex>\leftarrow=</tex> p
splay(u)
Анонимный участник

Навигация