Изменения

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

Heavy-light декомпозиция

2 байта добавлено, 23:54, 8 июня 2015
м
Реализация
'''int''' root = корень пути, в котором находится u
'''while''' root не является предком v <font color=green>// поднимаемся до тех пор, пока наш путь не содержит общего предка u и v</font>
segmentTree = дерево отрезков, соответствующее пути , в котором лежит u
res += segmentTree.sum(0, pathPos(u))
u = предок root <font color=green>// вырезали нижний путь и подняли нижнюю вершину до нижней вершины следующего пути</font>
root = корень пути, в котором находится v
'''while''' root не является предком u <font color=green>// аналогично прошлому while, но с другой стороны</font>
segmentTree = дерево отрезков, соответствующее пути , в котором лежит v
res += segmentTree.sum(0, pathPos(v))
v = предок root

Навигация