@@ -32,7 +32,6 @@ public HeavyLightDecomposition(int n) {
32
32
position = new int [n + 1 ];
33
33
nodeValue = new int [n + 1 ];
34
34
segmentTree = new int [4 * (n + 1 )];
35
-
36
35
for (int i = 0 ; i <= n ; i ++) {
37
36
tree [i ] = new ArrayList <>();
38
37
chainHead [i ] = -1 ;
@@ -56,7 +55,6 @@ public void addEdge(int u, int v) {
56
55
private void dfsSize (int node , int parentNode ) {
57
56
parent [node ] = parentNode ;
58
57
subtreeSize [node ] = 1 ;
59
-
60
58
for (int child : tree [node ]) {
61
59
if (child != parentNode ) {
62
60
depth [child ] = depth [node ] + 1 ;
@@ -69,19 +67,16 @@ private void dfsSize(int node, int parentNode) {
69
67
private void decompose (int node , int head ) {
70
68
chainHead [node ] = head ;
71
69
position [node ] = positionIndex ++;
72
-
73
70
int heavyChild = -1 , maxSubtreeSize = -1 ;
74
71
for (int child : tree [node ]) {
75
72
if (child != parent [node ] && subtreeSize [child ] > maxSubtreeSize ) {
76
73
heavyChild = child ;
77
74
maxSubtreeSize = subtreeSize [child ];
78
75
}
79
76
}
80
-
81
77
if (heavyChild != -1 ) {
82
78
decompose (heavyChild , head );
83
79
}
84
-
85
80
for (int child : tree [node ]) {
86
81
if (child != parent [node ] && child != heavyChild ) {
87
82
decompose (child , child );
0 commit comments