From 12e4d957ba2f0c6f1a7ee5a10cac0ebb05c932aa Mon Sep 17 00:00:00 2001 From: Ariel Date: Thu, 7 Mar 2024 18:52:59 +0800 Subject: [PATCH] Create quick_union.cc --- trees/quick_union.cc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 trees/quick_union.cc diff --git a/trees/quick_union.cc b/trees/quick_union.cc new file mode 100644 index 0000000..32b6e32 --- /dev/null +++ b/trees/quick_union.cc @@ -0,0 +1,22 @@ +class quick_union { +private: + vector c; +public: + quick_union(size_t n) : c(n) { + iota(c.begin(), c.end(), 0); + } + + size_t query(size_t i) { + if (c[i] != i) c[i] = query(c[i]); + return c[i]; + } + + void merge(size_t i, size_t j) { + c[query(i)] = query(j); + } + + bool connected(size_t i, size_t j) { + return query(i) == query(j); + } +}; +