Изменения

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

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

545 байт добавлено, 20:23, 8 мая 2016
Псевдокод
<code>
<font color=darkgreen>// turn[<tex>u</tex>] {{---}} номер вершины, первой на пути из <tex>last</tex> в <tex> u </tex></font>
'''int''' turn[MAXN];
<font color=darkgreen>// Расстояние от корня до вершины</font>
'''int''' dist[MAXN];
<font color=darkgreen>// Начало пути, на котором лежит вершина</font>
'''int''' last[MAXN];
<font color=darkgreen>//...
// Построение декомпозиции
//...</font>
<font color=darkgreen>// Находит наименьшего общего предка вершин <tex>u</tex> и <tex>v</tex></font>
'''int''' lca('''int''' u, '''int''' v):
'''else''':
'''return''' v
<font color=darkgreen>// Приблизимся к корню. Выбираем Рекурсивно запустимся от вершины, чей предок наиболее удаленную вершинуудален от корня.</font>
'''if''' (dist[last[u]] > dist[last[v]]):
'''return''' lca(last[u], v)
Анонимный участник

Навигация