Advertisement
Emiliatan

dsu

Nov 24th, 2019
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.51 KB | None | 0 0
  1. /* dsu */
  2. constexpr int _MAXN = 2e5;
  3.  
  4. int _parent[_MAXN + 1], _size[_MAXN + 1];
  5.  
  6. void _Init() noexcept
  7. {
  8.     for (int i = 1; i <= _MAXN; ++i)
  9.         _parent[i] = i, _size[i] = 1;
  10. }
  11. int _Find(int x) noexcept
  12. {
  13.     return (x == _parent[x] ? x : x = _Find(_parent[x]));
  14. }
  15. void _Union(int x, int y) noexcept
  16. {
  17.     x = _Find(x), y = _Find(y);
  18.  
  19.     if (x == y) return;
  20.  
  21.     if (_size[y] > _size[x])
  22.         swap(x, y);
  23.  
  24.     _parent[y] = x;
  25.     _size[x] += _size[y];
  26. }
  27. int _Getsize(int x) noexcept
  28. {
  29.     return _size[_Find(x)];
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement