> For the complete documentation index, see [llms.txt](https://dsa-cpp.gitbook.io/nafees/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dsa-cpp.gitbook.io/nafees/union-find-dynamic-connectivity-problem/what-is-a-union-find-data-structure.md).

# What is a Union Find Data Structure?

A [union-find algorithm](https://www.geeksforgeeks.org/introduction-to-disjoint-set-data-structure-or-union-find-algorithm/) is an algorithm that performs two useful operations on such a data structure:

* **Find:** Determine which subset a particular element is in. This can determine if two elements are in the same subset.
* **Union:** Join two subsets into a single subset. Here first we have to check if the two subsets belong to the same set. If not, then we cannot perform union.

{% hint style="info" %}
NOTE: sets of connected objects are called <mark style="color:blue;">connected components</mark>.
{% endhint %}

### Applications of a Union Find Structure <a href="#applications-of-a-union-find-structure" id="applications-of-a-union-find-structure"></a>

* Dynamic Connectivity in Networks
* Percolation Problems
* Graph algorithms
* and much more!
