Skip to content

Commit 864245a

Browse files
authored
Merge pull request #186 from atcoder/opt/dsu
fix dsu.leader to avoid multiple assert checks
2 parents 2df885d + ad80e62 commit 864245a

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

atcoder/dsu.hpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ struct dsu {
3535

3636
int leader(int a) {
3737
assert(0 <= a && a < _n);
38-
if (parent_or_size[a] < 0) return a;
39-
return parent_or_size[a] = leader(parent_or_size[a]);
38+
return _leader(a);
4039
}
4140

4241
int size(int a) {
@@ -69,6 +68,11 @@ struct dsu {
6968
// root node: -1 * component size
7069
// otherwise: parent
7170
std::vector<int> parent_or_size;
71+
72+
int _leader(int a) {
73+
if (parent_or_size[a] < 0) return a;
74+
return parent_or_size[a] = _leader(parent_or_size[a]);
75+
}
7276
};
7377

7478
} // namespace atcoder

0 commit comments

Comments
 (0)