--- id: dsu title: "Disjoint Set Union" author: Benjamin Qi, Michael Cao prerequisites: - Silver - Depth First Search description: The Disjoint Set Union (DSU) data structure allows you to add edges to an initially empty graph and test whether two vertices of the graph are connected. frequency: 3 --- import { Problem } from "../models"; export const metadata = { problems: { sample: [ new Problem("YS", "Union Find", "unionfind", "Easy", false, []), ], general: [ new Problem("Gold", "Mootube", "789", "Easy", false, [], "same as [CSES Road Construction](https://cses.fi/problemset/task/1676)"), new Problem("Gold", "Closing the Farm", "646", "Easy", false, [], "similar to [CSES Network Breakdown](https://cses.fi/problemset/task/1677)"), new Problem("Gold", "Favorite Colors", "1042", "Hard", false, [], ""), ], rollback: [ new Problem("YS", "Persistent Union Find", "persistent_unionfind", "Normal", false, [], ""), new Problem("YS", "Vertex Add Component Sum", "dynamic_graph_vertex_add_component_sum", "Hard", false, [], ""), new Problem("CF", "Edu F - Extending Set of Points", "contest/1140/problem/F", "Hard", false, [], ""), ], } }; ## Tutorial - [$\log^* n$](https://en.wikipedia.org/wiki/Proof_of_O(log*n)\_time_complexity\_of_union%E2%80%93find) - [$\alpha (m,n)$](https://dl.acm.org/doi/pdf/10.1145/321879.321884) ## Problems ## Rollback no path compression