From 266993db6eb1ef8838c3b81d6f316a706fa59142 Mon Sep 17 00:00:00 2001 From: Hizenberg Date: Sun, 30 Jun 2024 17:17:13 +0530 Subject: [PATCH] Kruskal's Algorithm --- Graph Algorithm/Kruskals.cpp | 84 ++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 Graph Algorithm/Kruskals.cpp diff --git a/Graph Algorithm/Kruskals.cpp b/Graph Algorithm/Kruskals.cpp new file mode 100644 index 0000000..93a591d --- /dev/null +++ b/Graph Algorithm/Kruskals.cpp @@ -0,0 +1,84 @@ +#include + +using namespace std; + +bool comp(vector& v1 , vector& v2 ){ + return v1[0] > v2[0]; +} + +class Solution{ + +public: + + 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); + } + }; + + + + //Solution function template... + int maxNumEdgesToRemove(int n, vector>& edges) { + + sort( edges.begin() , edges.end() , comp ); + + + } + +}; + +int main( int argc, char* argv[] ){ + + ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); + + Solution sol; + + //solution function call... + + + //Extract result and print the solution.. + + + return 0; +} \ No newline at end of file