@@ -55,27 +55,27 @@ impl HLD {
5555 let n = adj. len ( ) ;
5656 let mut p = vec ! [ None ; n] ;
5757 let mut siz = vec ! [ 0 ; n] ;
58- for & u in get_dfs_postorder ( adj) . iter ( ) {
59- adj[ u ] . retain ( |& v | siz[ v ] > 0 ) ;
60- siz[ u ] = 1 ;
61- for i in 0 ..adj[ u ] . len ( ) {
62- let v = adj[ u ] [ i] ;
63- p[ v ] = Some ( u ) ;
64- siz[ u ] += siz[ v ] ;
65- if siz[ v ] > siz[ adj[ u ] [ 0 ] ] {
66- adj[ u ] . swap ( 0 , i) ;
58+ for & v in get_dfs_postorder ( adj) . iter ( ) {
59+ adj[ v ] . retain ( |& u | siz[ u ] > 0 ) ;
60+ siz[ v ] = 1 ;
61+ for i in 0 ..adj[ v ] . len ( ) {
62+ let u = adj[ v ] [ i] ;
63+ p[ u ] = Some ( v ) ;
64+ siz[ v ] += siz[ u ] ;
65+ if siz[ u ] > siz[ adj[ v ] [ 0 ] ] {
66+ adj[ v ] . swap ( 0 , i) ;
6767 }
6868 }
6969 }
7070 let mut tin = vec ! [ 0 ; n] ;
7171 let mut head = vec ! [ 0 ; n] ;
7272 let mut d = vec ! [ 0 ; n] ;
7373 let ord = get_dfs_preorder ( adj) ;
74- for ( i, & u ) in ord. iter ( ) . enumerate ( ) {
75- tin[ u ] = i;
76- for & v in & adj[ u ] {
77- d[ v ] = 1 + d[ u ] ;
78- head[ v ] = if v == adj[ u ] [ 0 ] { head[ u ] } else { v } ;
74+ for ( i, & v ) in ord. iter ( ) . enumerate ( ) {
75+ tin[ v ] = i;
76+ for & u in & adj[ v ] {
77+ d[ u ] = 1 + d[ v ] ;
78+ head[ u ] = if u == adj[ v ] [ 0 ] { head[ v ] } else { u } ;
7979 }
8080 }
8181 HLD {
@@ -113,13 +113,13 @@ impl HLD {
113113 ) ;
114114 }
115115
116- /// Gets range representing the subtree of u
116+ /// Gets range representing the subtree of v
117117 ///
118118 /// # Complexity
119119 /// - Time: O(1)
120120 /// - Space: O(1)
121- pub fn sub_tree ( & self , u : usize ) -> Range < usize > {
122- self . tin [ u ] + self . vals_edges as usize ..self . tin [ u ] + self . siz [ u ]
121+ pub fn sub_tree ( & self , v : usize ) -> Range < usize > {
122+ self . tin [ v ] + self . vals_edges as usize ..self . tin [ v ] + self . siz [ v ]
123123 }
124124
125125 /// Gets the lowest common ancestor of u and v
@@ -171,14 +171,14 @@ impl HLD {
171171 /// # Complexity
172172 /// - Time: O(log n)
173173 /// - Space: O(1)
174- pub fn kth_par ( & self , mut u : usize , mut k : usize ) -> Option < usize > {
174+ pub fn kth_par ( & self , mut v : usize , mut k : usize ) -> Option < usize > {
175175 loop {
176- let len_path = self . tin [ u ] - self . tin [ self . head [ u ] ] ;
176+ let len_path = self . tin [ v ] - self . tin [ self . head [ v ] ] ;
177177 if k <= len_path {
178- return Some ( self . ord [ self . tin [ u ] - k] ) ;
178+ return Some ( self . ord [ self . tin [ v ] - k] ) ;
179179 }
180- match self . p [ self . head [ u ] ] {
181- Some ( v ) => u = v ,
180+ match self . p [ self . head [ v ] ] {
181+ Some ( u ) => v = u ,
182182 None => return None ,
183183 }
184184 k -= len_path + 1 ;
0 commit comments