Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 864245a

Browse files
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)

AltStyle によって変換されたページ (->オリジナル) /