+
+\s{Algoritmus pro celý problém:} Zkomprimujeme cesty a výsledný strom rozlo¾íme
+na~mikrostromy, makrostromy a spojovací hrany. Pro cesty a mikrostromy pou¾ijeme
+vý¹e popsané struktury, pro ka¾dou spojovací hranu si budeme pamatovat jen znaèku,
+zda je pøítomna, a pro makrostrom pøebarvovací strukturu.
+
+\>Operace $\<Union>(x,y)$:
+
+\algo
+\:Pokud $e=xy$ le¾í uvnitø cesty, pøidáme ji do~cesty, co¾ buïto zpùsobí
+ pøidávání jiné hrany do~stromu, a~nebo u¾ jsme hotovi.
+\:Pokud $e$ je spojovací, poznamenáme si, ¾e je pøítomna, a~konèíme.
+\:Pokud $e$ le¾í uvnitø mikrostromu nebo makrostromu, provedeme \<Union>
+ na~pøíslu¹né struktuøe.
+\endlist
+
+\>Operace $\<Find>(x,y)$:
+
+\algo
+\:Pokud $x$ a $y$ le¾í uvnitø jedné cesty, zeptáme se cestové struktury a konèíme.
+\:Pokud $x$ le¾í uvnitø nìjaké cesty, zjistíme dotazem na~cestovou strukturu,
+ ke~kterému krajnímu vrcholu cesty je pøipojen, a~$x$ nahradíme tímto vrcholem.
+ Není-li pøipojen k~¾ádnému, je~evidentnì odpovìï na~celý \<Find> negativní,
+ pokud k~obìma, vybereme si libovolný, proto¾e jsou stejnì v~cestovì komprimovaném
+ stromu spojeny hranou. Analogicky pro~$y$.
+\:[Nyní jsou $x$ a $y$ vrcholy cestovì zkomprimovaného stromu.]
+\:Le¾í-li $x$ a $y$ v~jednom mikrostromu, zeptáme se struktury pro~mikrostrom.
+\:Je-li $x$ uvnitø mikrostromu, zeptáme se mikrostromové struktury na~spojení s~koøenem mikrostromu.
+ Není-li, odpovíme {\sc ne}, stejnì jako kdy¾ není pøítomna pøíslu¹ná spojovací hrana.
+ Jinak $x$ nahradíme listem makrostromu, do~kterého spojovací hrana vede. Podobnì pro~$y$.
+\:[Nyní jsou $x$ a $y$ vrcholy makrostromu.]
+\:Odpovíme podle struktury pro makrostrom.
+\endalgo
+
+\s{Analýza:} Operace s~mikrostromy, spojovacími hranami a cestami jsou, jak u¾ víme,
+amortizovanì konstantní. Operace s~makrostromy také, jeliko¾ trvají $\O(\log n)$,
+ale provede se jich pouze $\O(n/\log n)$. Ka¾dou operaci \<Union> nebo \<Find>
+rozlo¾íme $\O(1)$ tìchto dílèích operací, tak¾e bude také trvat $\O(1)$ amortizovanì.
+
+\h{Fredericksonova clusterizace}
+
+Mikro/makro-stromová dekompozice není jediný zpùsob, jak stromy rozkládat. Nìkdy
+se hodí napøíklad následující my¹lenka:
+
+\s{Definice:} (Fredericksonova clusterizace) Nech» $G$ je graf kde $\forall v \in V(G): {\rm deg}(v)\le 3$
+a $c \in {\bb N}$. Pak $c$-clusterizací grafu $G$ nazveme libovolný rozklad
+$G$ na~souvislé podgrafy (clustery) $G_1, G_2, \ldots, G_k$ takový, ¾e platí:
+\itemize\ibull
+\:$\forall v \in V \exists ! i: v \in C_i$.
+\:$\forall i: \vert C_i\vert \le c$.
+\:$\forall i$ je vnìj¹i stupeò $C_i$ (tj. poèet hran, které vedou mezi $C_i$ a zbytkem grafu)
+nejvý¹e~3. Navíc pokud je právì~3, je cluster triviální, èili $\vert C_i \vert = 1$.
+\:®ádné dva sousední clustery nelze spojit.
+\endlist
+
+\s{Vìta:} (Frederickson) $c$-clusterizace grafu $G$ má $\O(V(G)/c)$ clusterù a lze ji
+najít v~lineárním èase.
+
+\s{Dùkaz:} Hladovì pomocí DFS. \qed
+
+\s{Pou¾ití:} Pøedchozí variantu Union-Find problemu bychom také mohli vyøe¹it nahrazením
+vrcholù stupnì $>3$ \uv{kruhovými objezdy bez jedné hrany}\foot{tzv. francouzský trik},
+nalezením $(\log n)$-clusterizace, pou¾itím bitové reprezentace mno¾in uvnitø clusterù
+a pøebarvovací struktury na~hrany mezi clustery.
+
+\h{Stromoví pøedchùdci}
+
+\s{Problém:} {\I (Least Common Ancestor alias LCA)} Chceme si pøedzpracovat zakoøenìný strom~$T$
+tak, abychom dokázali pro libovolné dva vrcholy $x,y$ najít co~nejrychleji jejich nejbli¾¹ího
+spoleèného pøedchùdce.
+
+\s{Triviální øe¹ení LCA:}