PedestrainCounting
UnionFind.h
1 
6 #ifndef UNION_FIND_HEADER
7 #define UNION_FIND_HEADER
8 
9 class UnionFind {
10 public:
11  UnionFind(int N);
12  ~UnionFind();
13 
18  int GetCount() const { return this->count; }
19 
24  int GetSize(int root) { return size[root]; }
25 
32  int Find(int p) const;
33 
42  bool Connected(int p, int q) const { return Find(p) == Find(q); }
43 
51  void Union(int p, int q);
52 
53 private:
54  int *parent;
55  int *size;
56  int count;
57  int num;
58 
59  // Is this a valid index?
60  inline bool Validate(int p) const;
61 };
62 
63 #endif
Definition: UnionFind.h:9
int GetCount() const
Definition: UnionFind.h:18
void Union(int p, int q)
Definition: UnionFind.cpp:34
bool Connected(int p, int q) const
Definition: UnionFind.h:42
int Find(int p) const
Definition: UnionFind.cpp:20
int GetSize(int root)
Definition: UnionFind.h:24