Skip to main content

Competitive Programming Topics

· 9 min read
Sarthak Mohanty

Graph Topics

Graphs (GR)
Basic Structure and Algorithms
Graph RepresentationCP 2.4.1CLRS 22.1
Graph Traversal (DFS/BFS)CP 4.2.1-2CLRS 22.2, 22.3Maximal 1Maximal 2
Flood Fill - Connected Components (Undirected Graphs)CP 4.2.3-4Maximal
Toplogical Sort (DAG)CP 4.2.5WikipediaCLRS 22.4Maximal
Bipartite Graph CheckCP 4.2.6
Graph Edge TypesCP 4.2.7CLRS 22.3
Aritculation Points and Bridges (Undirected Graphs)CP 4.2.8Maximal 1Maximal 2Maximal 3CF Blog
Biconnected Component and Block-cut TreeWikipediaLibrary
Bridge TreeQuoraLibrary
Strongly Connected Components (Directed Graphs)CP 4.2.9CLRS 22.5Maximal
Minimum Spanning Tree (MST)
Kruskal's AlgorithmCP 4.3.2CLRS 23
Prim's AlgorithmCP 4.3.3CLRS 23
MST VariantsCP 4.3.4
Shortest Path Problem
SSSP on Unweighted Graph (BFS)CP 4.4.2
SSSP on Unweighted Graph (Dijkstra's Algorithm)CP 4.4.3Maximal 1Maximal 2
SSSP on Weighted Graph with Negative Cycles (Bellman-Ford's Algorithm)CP 4.4.4
APSP (Floyd Warshall's Algorithm)CP 4.4.5
Network Flow
Ford Fulkerson's MethodCP 4.6.2
Edmonds Karp's AlgorithmCP 4.6.3
Max Flow: Graph ModelingCP 4.6.4CP 4.6.6
Max Flow: Applications and VariantsCP 4.6.5Topcoder 1Topcoder 2
Minimum Cost (Max) FlowCP 9.23Topcoder
Directed Acyclic Graph (DAG)
Shortest/Longest PathCP 4.7.1
Counting PathsCP 4.7.1
Converting General Graph to DAGCP 4.7.1
Minimum Path Cover (MPC)CP 9.24
Trees
Basic PropertiesCP 4.7.2CF Blog
Minimum Vertex Cover (MVC) - DP on TreesCP 4.7.1
Max Weighted Independent Set (MWIS) - DP on TreesCP 9.22
Lowest Common AncestorCP 9.18TopcoderCF BlogCF Blog
DSU on TreesCF blog
Centroid DecompositionQuoraBlog
Bipartite Graph
Maximum Cardinality Bipartite Matching (MCBM)CP 4.7.4
Maximum Independet Set (MIS) and MVCCP 4.7.4
Max Weighted Independent Set (MWIS)CP 9.22
Hungarian AlgorithmMaximalTopcoder
Special Graphs
Eulerian GraphCP 4.7.3CF Blog

Maths Topics

Mathematics (MT)
Combinatorics
Fibonacci NumbersMaximalCP 5.4.1Wiki - Fibonacci NumberWiki - Pisano Period
Binomial CoefficientCP 5.4.2MaximalWiki - Binomial TheoremWiki - Binomial CoefficientWiki - Stars and Bars
Catalan NumbersWikipediaMaximalCP 5.4.3
Inclusion-Exclusion PrincipleMaximal
Pigeonhole PrincipleCut The KnotACPQuoraWikipedia
Burnside's LemmaIMO MathBrilliantMaximalWhitman
Number Theory
Prime NumbersCP 5.5.1Maximal 1Maximal 2ACPTopcoder
Perfect NumbersWikipedia
Euclidean Algorithm (GCD and LCM)CP 5.5.2Maximal
Prime FactorizationCP 5.5.4CP 5.5.5ACP
FactorialCP 5.5.3ACP
Functions Involving Prime FactorsCP 5.5.6
Euler's Totient (Phi) FunctionMaximalCP 5.5.6
Modified SieveCP 5.5.7
Modular ArithmeticCP 5.5.8KhanMaximalACP
Extended Euclidean AlgorithmCP 5.5.9MaximalWikipedia
Modular Equation (AX = B)Maximal
Diophantine Equation (AX + BY = C)Maximal
Discrete LogarithmMaximal
Moebius FunctionACP
Probability Theory
Basics of Probability TheoryMath 4 lectures (3 to 7)CP 5.6ACP (7 videos)Topcoder
Probabilistic AnalysisCLRS 5
Gambler's Ruin ProblemWikipedia
Cycle Finding
Game Theory
Decision Tree and Minimax StrategyCP 5.8
Nim Game and Sprague-Grundy TheoremMaximalTopcoderBlog 1Blog 2
Games on General GraphsMaximalLibrary 1Library 2
Numerical Methods
Newton's MethodWikipediaMaximalNotes
Ruffini–Horner's methodWikipediaNotes
Others
Ad Hoc/Elementary MathCP 5.2ACP
Canonical FormWikipedia
Binary ExponentiationMaximal
BigInteger (Long Arithmetic)CP 5.3
Factorial Number SystemWikipedia
Matrix MultiplicationCP 9.20
Matrix PowerCP 9.21
Specific Problems and Algorithms
Specific Problems
Magic SquareCP 9.19
Pancake SortingCP 9.25
Roman NumeralsCP 9.28
Selection ProblemCP 9.29
Tower of HanoiCP 9.34
Range Minimum QueryMaximal
Specific Algorithms
Partially Ordered SetsCF Blog

Data Structures

Data Structures (DS)
Sortings
1Merge SortCLRS 2.3
2Inversion IndexCP 9.14
3Counting SortCP 9.32WikipediaCLRS 8.2
4Radix SortCP 9.32CLRS 8.3
Linear Data Structures
5Basic data structuresCP 2.2CLRS 10
6BitSet and BitmasksCP 2.2
7Modified Stacks/Queues for finding minimum in O(1)Maximal
Non-Linear Data Structures
8Treemaps and TreesetsCP 2.3
9Hashmaps and HashsetsCP 2.3Effective Java (item 9)CLRS 11
Tree-Related Data Structures
10Segment TreeCP 2.4.3Maximal
11Fenwick Tree (BIT)CP 2.4.4TC tutorialsBlogMaximalKth Element
12Heap (and Priority Queue)GeeksForGeeksCLRS 6TutorialCP 2.3
13TreapsQuoraMaximalLibrary
14Randomized HeapMaximal
15Binary Search TreeCLRS 12
16Fibonacci HeapCLRS 19
Other Data Structures
17Disjoint-Sets Union (DSU)CP 2.4.2MaximalCLRS 21CF Blog
18Sparse TableCP 9.33Blog
19SQRT DecompositionMaximal
20Treaps (Randomized Cartesian Tree)MaximalQuoraHabrahabrComparison