Concepts116

⚙️AlgorithmIntermediate

Bipartite Matching - Kuhn's Algorithm

Kuhn’s algorithm finds a maximum matching in a bipartite graph by repeatedly searching for augmenting paths using DFS.

#bipartite matching#kuhn algorithm#augmenting path+12
⚙️AlgorithmIntermediate

König's Theorem

König's Theorem states that in any bipartite graph, the size of a maximum matching equals the size of a minimum vertex cover.

#konig's theorem#bipartite matching#minimum vertex cover+12
⚙️AlgorithmIntermediate

Flow - Modeling Techniques

Many classic problems can be modeled as a maximum flow problem by building the right network and capacities.

#max flow#dinic#bipartite matching+12
⚙️AlgorithmAdvanced

Minimum Cost Maximum Flow

Minimum Cost Maximum Flow (MCMF) finds the maximum possible flow from a source to a sink while minimizing the total cost paid per unit of flow along edges.

#minimum cost maximum flow#successive shortest augmenting path#reduced cost+11
⚙️AlgorithmIntermediate

Min-Cut Max-Flow Theorem

The Max-Flow Min-Cut Theorem says the maximum amount you can push from source to sink equals the minimum total capacity you must cut to disconnect them.

#max flow#min cut#edmonds karp+12
⚙️AlgorithmIntermediate

Maximum Flow - Dinic's Algorithm

Dinic's algorithm computes maximum flow by repeatedly building a level graph with BFS and sending a blocking flow using DFS.

#dinic#maximum flow#blocking flow+11
⚙️AlgorithmIntermediate

Maximum Flow - Ford-Fulkerson

Ford–Fulkerson finds the maximum possible flow from a source to a sink by repeatedly pushing flow along an augmenting path in the residual graph.

#maximum flow#ford-fulkerson#edmonds-karp+10
⚙️AlgorithmAdvanced

Biconnected Components

A biconnected component (block) is a maximal subgraph where removing any single vertex keeps it connected.

#biconnected components#blocks#articulation points+12
⚙️AlgorithmAdvanced

Virtual Tree (Auxiliary Tree)

A Virtual Tree (Auxiliary Tree) compresses a large tree into a much smaller tree that contains only the k important nodes and the LCAs needed to keep them connected.

#virtual tree#auxiliary tree#lca+12
⚙️AlgorithmIntermediate

LCA - Binary Lifting

Binary lifting precomputes 2^k ancestors for every node so we can jump upward in powers of two.

#lca#binary lifting#tree+12
⚙️AlgorithmIntermediate

Strongly Connected Components

Strongly Connected Components (SCCs) partition a directed graph into maximal groups where every vertex can reach every other vertex in the group.

#strongly connected components#tarjan#kosaraju+12
⚙️AlgorithmIntermediate

Bridge Tree

A bridge tree is built by contracting every 2-edge-connected component of an undirected graph into a single node, leaving only bridges as edges between nodes.

#bridge tree#2-edge-connected components#bridges+12