05 — Papers and Reference Materials

Most DSA learners never read the original papers, and for the first 7-8 months of this journey, that’s correct — there’s no marginal learning value in Dijkstra’s 1959 paper compared to a modern CP explanation with working examples. But a small set of original papers provide context that is genuinely missing from textbook treatments: why the algorithm was invented, what problem it was solving, and what the original framing was. Understanding that context occasionally unlocks insight that the modern clean version obscures.

The bulk of this section is reference material: the specific sections of CP-Algorithms and USACO Guide worth bookmarking, editorial finding strategies, and awareness of 2024-2026 developments in the field.


Key Algorithmic Papers — Context, Not Full Reading

These are not assigned reading. They are context-setters for algorithms you’ll implement. Read the Wikipedia article first, then optionally skim the original paper for the framing.

Dijkstra’s Shortest Path Algorithm (1959)

  • Original: E.W. Dijkstra, “A note on two problems in connexion with graphs,” Numerische Mathematik 1, 1959.

  • Length: 3 pages. Extremely short. Written before modern algorithm notation.

  • Why it matters: Dijkstra solved this to find the shortest path for a computer demonstrating at an exhibition. The algorithm was designed with manual computation in mind. Reading the original framing clarifies that the algorithm is conceptually simpler than textbook treatments make it seem — priority queue is a later optimization, not the original formulation.

  • Where to find it: Search “Dijkstra 1959 shortest path PDF” — it’s in the public domain.

  • CP-Algorithms coverage: cp-algorithms.com/graph/dijkstra.html — excellent modern treatment with implementation.

KMP String Matching (1977)

  • Original: Knuth, Morris, Pratt, “Fast Pattern Matching in Strings,” SIAM Journal on Computing, 1977.

  • Length: 23 pages. Heavier than Dijkstra’s.

  • Why it matters: The failure function (partial match table) is the part students get wrong. The original paper explains the invariant the failure function maintains in a way that modern CS textbooks sometimes obscure by going straight to the algorithm. Understanding the invariant is what allows you to implement KMP correctly without memorizing it.

  • Practical recommendation: Read the cp-algorithms.com treatment first. If the failure function still doesn’t click after implementing it, read Section 2 of the KMP paper.

  • CP-Algorithms coverage: cp-algorithms.com/string/prefix-function.html

Master Theorem (1980)

  • Original context: Bentley, Haken, Saxe, “A general method for solving divide-and-conquer recurrences,” SIGACT News, 1980.

  • Why it matters: You will use the Master Theorem to analyze divide-and-conquer algorithm complexity throughout this journey. Understanding why it works (not just the three cases) prevents misapplication to non-standard recurrences.

  • Practical recommendation: CLRS Chapter 4 has the most pedagogically complete treatment of the Master Theorem and its proof. That specific chapter is worth reading even if you skip the rest of CLRS.

  • Alternative: Khan Academy’s Master Theorem explanation is accessible and free.

Floyd-Warshall (1962)

  • Original: Robert Floyd, “Algorithm 97: Shortest Path,” Communications of the ACM, 1962.

  • Length: Half a page. One of the shortest algorithm papers ever published.

  • Why it matters: The algorithm is a beautiful example of dynamic programming where the state definition is the entire insight. Floyd’s original formulation makes the DP state immediately obvious.

  • CP-Algorithms coverage: cp-algorithms.com/graph/all-pair-shortest-path-floyd-warshall.html


CP-Algorithms.com — Sections to Bookmark

The site is organized by topic. These are the specific sections with the highest ROI for this journey, organized by when you’ll need them:

Phase 1-2 (Foundations):

  • /algebra/sieve-of-eratosthenes — Prime sieve, needed for number theory problems

  • /algebra/binary-exp — Binary exponentiation (fast power), ubiquitous in CP

  • /data_structures/stack_queue_modification — Monotonic stack/queue patterns

  • /data_structures/segment_tree — Segment tree with lazy propagation

Phase 2-3 (Core CP):

  • /graph/breadth-first-search — BFS with template code

  • /graph/depth-first-search — DFS + DFS tree structure

  • /graph/dijkstra — Dijkstra with priority queue implementation

  • /graph/bellman_ford — Bellman-Ford + negative cycle detection

  • /graph/mst-prim and /graph/mst-kruskal — MST algorithms

  • /graph/topological-sort — Kahn’s algorithm + DFS-based

  • /string/prefix-function — KMP failure function

  • /string/z-function — Z-algorithm for string matching

Phase 3-5 (Advanced):

  • /graph/bridge-searching — Bridges and articulation points (Tarjan’s)

  • /graph/strongly-connected-components — SCC (Tarjan’s + Kosaraju’s)

  • /graph/bipartite-check — Bipartite checking + 2-coloring

  • /graph/lca — Lowest Common Ancestor

  • /dynamic_programming/divide-and-conquer-dp — D&C DP optimization

  • /string/aho_corasick — Aho-Corasick multi-pattern matching

Phase 4-6 (Expert):

  • /graph/min-cost-flow — Min cost flow (for optimization problems)

  • /graph/maximum-bipartite-matching — Bipartite matching

  • /data_structures/sqrt_decomposition — Square root decomposition

  • /data_structures/treap — Treap (when segment tree is insufficient)


USACO Guide — Sections to Bookmark

USACO Guide is organized by Bronze → Silver → Gold → Platinum. This is the phase-aligned path:

Phase 1-2 (Bronze/low Silver):

  • Bronze: Simulation, Complete Search, Sorting & Sets, Greedy

  • Silver intro: Two Pointers, Binary Search, Sorting with Custom Comparators

Phase 2-3 (Silver):

  • Silver: BFS/DFS, Flood Fill, Tree Algorithms, Prefix Sums

  • Silver: Intro to Graphs, Shortest Paths

Phase 3-4 (Gold):

  • Gold: Dynamic Programming (all subtopics — this is the densest section)

  • Gold: Graphs (Dijkstra, BFS/DFS, SCC, Bridges)

  • Gold: Trees (HLD, LCA, Euler Tour)

Phase 4-5 (Platinum):

  • Platinum: Segment Tree (lazy propagation), Convex Hull Trick, SQRT Decomposition

URL: usaco.guide (verify before use — should be stable, community-maintained)


Finding Good Editorials for CSES Problems

CSES does not have official editorials for all problems. The recommended sources:

  1. CP-Algorithms.com — many CSES problem types are directly covered

  2. USACO Guide editorial section — for problems that map to USACO Guide topics

  3. TLE Eliminators YouTube (India) — produces video solutions for CSES problems; search “TLE Eliminators CSES [problem name]”

  4. Codeforces blog search — search “CSES [problem name]” on Codeforces blog section; experienced CP users have written detailed editorial posts

  5. GitHub: “CSES Solutions” — multiple repositories with solution code; use only after genuine attempt + reading the approach

The correct workflow: attempt the problem → stuck after 30-45 minutes → look up approach (not code) on one of the above → implement from the approach description → verify → then look at code if implementation is still stuck.


2024-2026 Algorithmic Developments Worth Knowing About

These are not exam material for this journey but worth awareness:

Competitive Programming:

  • KACTL (KTH Algorithm Competition Template Library) — The reference template library used by top ICPC teams. Not a learning resource but a quality benchmark. GitHub: kth-competitive-programming/kactl. Seeing well-implemented algorithms helps calibrate what “correct implementation” looks like.

  • Library-Checker (judge.yosupo.jp) — Japan-based judge for testing the correctness and performance of specific algorithms. Used to benchmark implementations. Not a primary learning platform but useful for verifying your segment tree or FFT implementation.

Algorithmic Research (aware, not required):

  • The field of online algorithms and competitive online algorithms has had interesting developments, but nothing that materially changes what a 9-month CP learner needs to know.

  • Randomized algorithms and probabilistic data structures (like bloom filters) are increasingly relevant in practical engineering. They occasionally appear in competitive programming but not at the Div. 3/Div. 2 level.

LLMs and Competitive Programming (2025-2026 context):

  • As of 2025-2026, LLMs can solve Easy and some Medium LeetCode problems reliably. They are inconsistent on Hard LeetCode and largely fail on Codeforces Div. 2 C-D level problems. Using LLMs to generate solutions and submitting them is a fast path to no learning. Using LLMs to explain why your approach fails (after your genuine attempt) is a legitimate learning tool.

  • The community debate on this is live. The practical answer: solve first, look at LLM explanations only if stuck after NeetCode video + editorial.


Summary

Resource

Type

When to Use

URL

CP-Algorithms.com

Per-algorithm reference

Phases 2-6, per topic

cp-algorithms.com

USACO Guide

Structured curriculum

Phases 1-5

usaco.guide

Dijkstra’s 1959 paper

Historical context

Phase 3, when implementing Dijkstra

Search PDF

KMP 1977 paper

Invariant understanding

Phase 3-4, when KMP is unclear

Search PDF

KACTL

Implementation benchmark

Phase 4-6

github.com/kth-competitive-programming/kactl

Library-Checker

Algorithm verification

Phase 4-6

judge.yosupo.jp


Navigation: ← Visualizers & Tools | → Phase-to-Resource Map | ↑ Top