From 9415c7f0c79beaae068c9038326ce66d5ea3d910 Mon Sep 17 00:00:00 2001 From: Hizenberg Date: Sun, 30 Jun 2024 17:18:26 +0530 Subject: [PATCH] dsu --- Graph Algorithm/dsu.cpp | 45 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Graph Algorithm/dsu.cpp diff --git a/Graph Algorithm/dsu.cpp b/Graph Algorithm/dsu.cpp new file mode 100644 index 0000000..d1e79f0 --- /dev/null +++ b/Graph Algorithm/dsu.cpp @@ -0,0 +1,45 @@ +class dsu{ + public: + vector parent; + vector size; + + dsu(int sz){ + parent.resize(sz); + size.resize(sz); + + for(int i = 0 ; i < sz ; i++ ) + parent[i] = i , size[i] = 1; + } + + int find(int n){ + if( parent[n] == n ) return n; + + return parent[n] = find( parent[n] ); + } + + int find_iterative( int n ){ + while( parent[n] != n ){ + n = parent[n]; + } + return n; + } + + void unite(int a, int b){ + + int par_a = find(a); + int par_b = find(b); + + if( par_a == par_b ) + return; + + if( size[par_a] < size[par_b] ) swap(par_a, par_b); + + size[par_a] += size[par_b]; + + parent[par_b] = par_a; + } + + bool isSame(int a , int b){ + return find(a) == find(b); + } + }; \ No newline at end of file