🌟 Star it 🍴Fork it 💜 Contribute to it!
Before creating a PR or issue, please do the following:
Check the Contribution Guide.
You can also update the repository according to this structure: Arrays
All DSA Solutions in one repo! You are free to contribute your code.
License: MIT License
🌟 Star it 🍴Fork it 💜 Contribute to it!
Before creating a PR or issue, please do the following:
Check the Contribution Guide.
You can also update the repository according to this structure: Arrays
//Given an undirected, connected and weighted graph, find Minimum Spanning Tree (MST) of the graph using Kruskal’s algorithm.
#include<bits/stdc++.h>
using namespace std;
// Creating shortcut for an integer pair
typedef pair<int, int> iPair;
// Structure to represent a graph
struct Graph
{
int V, E;
vector< pair<int, iPair> > edges;
// Constructor
Graph(int V, int E)
{
this->V = V;
this->E = E;
}
// Utility function to add an edge
void addEdge(int u, int v, int w)
{
edges.push_back({w, {u, v}});
}
// Function to find MST using Kruskal's
// MST algorithm
int kruskalMST();
};
// To represent Disjoint Sets
struct DisjointSets
{
int *parent, *rnk;
int n;
// Constructor.
DisjointSets(int n)
{
// Allocate memory
this->n = n;
parent = new int[n+1];
rnk = new int[n+1];
// Initially, all vertices are in
// different sets and have rank 0.
for (int i = 0; i <= n; i++)
{
rnk[i] = 0;
//every element is parent of itself
parent[i] = i;
}
}
// Find the parent of a node 'u'
// Path Compression
int find(int u)
{
/* Make the parent of the nodes in the path
from u--> parent[u] point to parent[u] */
if (u != parent[u])
parent[u] = find(parent[u]);
return parent[u];
}
// Union by rank
void merge(int x, int y)
{
x = find(x), y = find(y);
/* Make tree with smaller height
a subtree of the other tree */
if (rnk[x] > rnk[y])
parent[y] = x;
else // If rnk[x] <= rnk[y]
parent[x] = y;
if (rnk[x] == rnk[y])
rnk[y]++;
}
};
/* Functions returns weight of the MST*/
int Graph::kruskalMST()
{
int mst_wt = 0; // Initialize result
// Sort edges in increasing order on basis of cost
sort(edges.begin(), edges.end());
// Create disjoint sets
DisjointSets ds(V);
// Iterate through all sorted edges
vector< pair<int, iPair> >::iterator it;
for (it=edges.begin(); it!=edges.end(); it++)
{
int u = it->second.first;
int v = it->second.second;
int set_u = ds.find(u);
int set_v = ds.find(v);
// Check if the selected edge is creating
// a cycle or not (Cycle is created if u
// and v belong to same set)
if (set_u != set_v)
{
// Current edge will be in the MST
// so print it
cout << u << " - " << v << endl;
// Update MST weight
mst_wt += it->first;
// Merge two sets
ds.merge(set_u, set_v);
}
}
return mst_wt;
}
// Driver program to test above functions
int main()
{
/* Let us create above shown weighted
and undirected graph */
int V = 9, E = 14;
Graph g(V, E);
// making above shown graph
g.addEdge(0, 1, 4);
g.addEdge(0, 7, 8);
g.addEdge(1, 2, 8);
g.addEdge(1, 7, 11);
g.addEdge(2, 3, 7);
g.addEdge(2, 8, 2);
g.addEdge(2, 5, 4);
g.addEdge(3, 4, 9);
g.addEdge(3, 5, 14);
g.addEdge(4, 5, 10);
g.addEdge(5, 6, 2);
g.addEdge(6, 7, 1);
g.addEdge(6, 8, 6);
g.addEdge(7, 8, 7);
cout << "Edges of MST are \n";
int mst_wt = g.kruskalMST();
cout << "\nWeight of MST is " << mst_wt;
return 0;
}
Should I add tower of hanoi problem solution (iterative solution using DP) for hacktoberfest
I want to add implementation of finding articulation_points in graph using C++. Please assign this task to me.
I want to add implementation of Strongly Connected Components in Graph using C++. Please assign this task to me.
I want to add implementation of Kruskal's minimum spanning tree of a graph using C++. Please assign this task to me.
will create a dedicated folder for Monotonic Stacks and add solutions to some standard questions for this topic.
I would like to upload my stack implementation in java code to you repo
Please assign this issue to me.
Can I contribute with Tower of Hanoi algorithm?
I want to add first missing positive integer solution in arrays using java. Please assign this task to me.
plz assign me the issue
I want to add implementation of Prim's Minimum Spanning Tree of a Graph using C++. Please assign this task to me.
Please assign this issue to me.
Please assign this issue to me.
Please assign this issue to me.
Hi @bhumikatewary , I want to add the c++ solution to the problem: detecting loops in a linked list. Can you assign this task to me?
Raising a request to add Lomuto partition in Sorting
Hi @bhumikatewary, I would like to add Leetcode problem, 334. Increasing Triplet Subsequence.
In the Array folder ,Can i write the code in java else you can tell me in which part should i work on through java language .
Thank - you
Hi @bhumikatewary, I want to add the implementation of DSU.
Can you please assign it to me?
I'd like to implement the following algorithm for Python:
Given an unsorted integer array, find the first missing positive integer.
Example:
Given [1,2,0] return 3,
[3,4,-1,1] return 2,
[-8, -7, -6] returns 1
Your algorithm should run in O(n) time and use constant space.
Hey @bhumikatewary I want to contribute with code to this problem. Please assign it ot me.
I noticed there's already an implementation in the bit manipulation folder, but I'd like to add a second implementation that uses the standard library to calculate the hamming weight of a number.
I want to contribute this, can I do it ?
There is no trees implementation in java , so i would like to add it
Please add hacktoberfest mark in this
Hi @bhumikatewary, I would like to contribute binary tree maximum path sum algorithm.
I'd like to add an example to the OOPS directory that uses function pointers with C++ classes.
Hi @bhumikatewary, I want to add LPS code in c++ under the DP file section.
Can you please assign it to me?
Please assign me this issue.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.