aboutsummaryrefslogtreecommitdiffstats
path: root/meowpp/dsa/DisjointSet.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'meowpp/dsa/DisjointSet.hpp')
-rw-r--r--meowpp/dsa/DisjointSet.hpp55
1 files changed, 0 insertions, 55 deletions
diff --git a/meowpp/dsa/DisjointSet.hpp b/meowpp/dsa/DisjointSet.hpp
deleted file mode 100644
index 98b2b98..0000000
--- a/meowpp/dsa/DisjointSet.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-#include "DisjointSet.h"
-
-
-#include <vector>
-#include <cstdlib>
-
-namespace meow{
- inline size_t DisjointSet::_root(size_t now){
- if(father[now] == now) return now;
- return (father[now] = _root(father[now]));
- }
- inline size_t DisjointSet::_merge(size_t a, size_t b){
- a = _root(a);
- b = _root(b);
- if(a == b) return a;
- if(depth[a] > depth[b]){
- father[b] = a;
- return a;
- }else{
- father[a] = b;
- if(depth[a] == depth[b]){
- depth[b]++;
- }
- return b;
- }
- }
- //
- inline DisjointSet::DisjointSet(): n(0){ }
- inline DisjointSet::DisjointSet(size_t _n): n(0){
- reset(_n);
- }
- inline DisjointSet::DisjointSet(DisjointSet const& dsj){
- n = dsj.n;
- father = dsj.father;
- depth = dsj.depth;
- }
- //
- inline size_t DisjointSet::root(size_t a) const{
- return ((DisjointSet*)this)->_root(a);
- }
- inline size_t DisjointSet::size() const{ return n; }
- //
- inline void DisjointSet::reset(size_t _n){
- n = _n;
- father.resize(n);
- depth .resize(n);
- for(size_t i = 0; i < n; i++){
- father[i] = i;
- depth [i] = 1;
- }
- }
- inline size_t DisjointSet::merge(size_t a, size_t b){
- return _merge(a, b);
- }
-}