[{"data":1,"prerenderedAt":6046},["ShallowReactive",2],{"nav:algorithms":3,"lesson:\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":374,"course-wordcounts":5914,"ref-card-index":5970},[4,28,50,71,120,152,205,230,286,306,331,352],{"module":5,"moduleNumber":6,"slug":7,"lessons":8},"Foundations",1,"foundations",[9,15,21],{"title":10,"path":11,"lessonNumber":6,"topics":12,"summary":14},"What Is an Algorithm?","\u002Falgorithms\u002Ffoundations\u002Fwhat-is-an-algorithm",[5,13],"Correctness & Induction","An algorithm is a finite, mechanical recipe that transforms inputs into outputs. We pin down what counts as an algorithm, how we write one down, and the three things we always ask of it: is it correct, is it fast, and can we prove it.\n",{"title":16,"path":17,"lessonNumber":18,"topics":19,"summary":20},"Asymptotic Analysis","\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis",2,[16],"We measure an algorithm's running time as a function of its input size, then strip away machine-specific constants and lower-order terms to compare algorithms cleanly. This lesson defines the RAM model and the $O$, $\\Omega$, $\\Theta$, $o$, and $\\omega$ notations, and shows how to read the cost of loops off the page.\n",{"title":22,"path":23,"lessonNumber":24,"topics":25,"summary":27},"Recurrences and the Master Theorem","\u002Falgorithms\u002Ffoundations\u002Frecurrences",3,[26],"Recurrences","Recursive and divide-and-conquer algorithms describe their own running time with a recurrence: $T(n)$ in terms of $T$ on smaller inputs. We solve recurrences three ways — drawing the recursion tree, guessing-and-verifying by induction, and applying the Master Theorem — using merge sort as the running example.\n",{"module":29,"moduleNumber":18,"slug":30,"lessons":31},"Divide & Conquer","divide-and-conquer",[32,38,44],{"title":33,"path":34,"lessonNumber":6,"topics":35,"summary":37},"Divide and Conquer & Mergesort","\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort",[29,36],"Comparison Sorting","Divide and conquer breaks a problem into smaller copies of itself, solves them recursively, and stitches the answers together. We meet the paradigm through mergesort — its merge step, its loop-invariant proof, and the recursion tree that pins its cost at $\\Theta(n\\log n)$ — then glimpse Karatsuba multiplication as a second example of the same idea.",{"title":39,"path":40,"lessonNumber":18,"topics":41,"summary":43},"Quicksort","\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort",[36,42],"Probabilistic Analysis","Quicksort sorts in place by partitioning around a pivot and recursing on each side. We give Lomuto and Hoare partitioning with a correctness invariant, see why a bad pivot costs $\\Theta(n^2)$ while a balanced one gives $\\Theta(n\\log n)$, and prove that randomizing the pivot makes the expected cost $\\Theta(n\\log n)$ on every input.",{"title":45,"path":46,"lessonNumber":24,"topics":47,"summary":49},"Linear-Time Selection","\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection",[48,29],"Order Statistics","Finding the $k$-th smallest element looks like it should require sorting, but it does not. Quickselect adapts quicksort's partition to recurse on just one side, achieving expected $O(n)$. The median-of-medians algorithm guarantees a good pivot with the groups-of-five trick, pushing the worst case down to a provable $O(n)$.",{"module":51,"moduleNumber":24,"slug":52,"lessons":53},"Sorting & Order Statistics","sorting",[54,60,65],{"title":55,"path":56,"lessonNumber":6,"topics":57,"summary":59},"Heaps and Heapsort","\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort",[58,36],"Heaps","A binary heap is a tree we store flat in an array, with index arithmetic standing in for pointers. We build the max-heap property bottom-up in $O(n)$ time, sort in place in $\\Theta(n\\log n)$ by repeatedly extracting the maximum, and reuse the same structure to implement a priority queue.",{"title":61,"path":62,"lessonNumber":18,"topics":63,"summary":64},"Lower Bounds for Comparison Sorting","\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds",[36],"Every sort we have seen runs in $\\Omega(n\\log n)$, and that is no accident. Modeling a sort as a decision tree of comparisons, we show any such tree must have $n!$ leaves, forcing height $\\ge \\log_2(n!) = \\Omega(n\\log n)$ — a worst-case bound no comparison sort can ever beat.",{"title":66,"path":67,"lessonNumber":24,"topics":68,"summary":70},"Sorting in Linear Time","\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting",[69],"Linear-Time Sorting","The $\\Omega(n\\log n)$ barrier only binds algorithms that compare. By instead using keys as array indices we slip past it: counting sort runs in $\\Theta(n+k)$ and is stable, radix sort layers it digit by digit, and bucket sort averages $\\Theta(n)$ on uniform data. We see exactly when each applies.",{"module":72,"moduleNumber":73,"slug":74,"lessons":75},"Data Structures",4,"data-structures",[76,82,88,93,99,105,113],{"title":77,"path":78,"lessonNumber":6,"topics":79,"summary":81},"Elementary Data Structures","\u002Falgorithms\u002Fdata-structures\u002Felementary-structures",[80],"Linear Structures","Every container is built one of two ways: **contiguous** in an array, or **linked** through pointers. We trade cache-friendly random access against $O(1)$ splicing, derive the **amortized $O(1)$** append of a doubling dynamic array, and assemble the two ordered access disciplines — the LIFO **stack** and the FIFO **queue** (with its generalization, the **deque**) — on top of both.",{"title":83,"path":84,"lessonNumber":18,"topics":85,"summary":87},"Hash Tables","\u002Falgorithms\u002Fdata-structures\u002Fhash-tables",[86],"Hashing","A hash table implements the dictionary — insert, search, delete — in expected $O(1)$ time by scattering keys across an array with a hash function. We build up from direct addressing, handle collisions by chaining and by open addressing, analyze the load factor $\\alpha$, and see how universal hashing earns its expected-time guarantee against every input.",{"title":89,"path":90,"lessonNumber":24,"topics":91,"summary":92},"Binary Search Trees","\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees",[89],"A binary search tree keeps keys ordered so that every operation follows a single root-to-leaf path. We state the BST property, give search and insert, find minimum, maximum, and successor, see that an inorder walk emits the keys in sorted order, and confront the catch — every operation costs $O(h)$, and a carelessly built tree degrades to height $h = \\Theta(n)$, motivating balance.",{"title":94,"path":95,"lessonNumber":73,"topics":96,"summary":98},"AVL Trees","\u002Falgorithms\u002Fdata-structures\u002Favl-trees",[97],"Balanced Trees","An AVL tree is the first balanced BST: at every node the two subtrees' heights differ by at most $1$. A Fibonacci-style minimal-node argument forces height $h \\le 1.44\\log_2 n = O(\\log n)$, so search, insert, and delete are all $O(\\log n)$. Insertion rebalances with at most one of four rotation cases (LL, RR, LR, RL); deletion may rotate all the way to the root.",{"title":100,"path":101,"lessonNumber":102,"topics":103,"summary":104},"Balanced Search Trees","\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees",5,[97],"An ordinary BST can degrade to height $\\Theta(n)$; balanced search trees guarantee $h = O(\\log n)$ by maintaining invariants and repairing them after every update. We meet rotations, the local restructuring primitive, then red-black trees, whose color invariants force logarithmic height, and finally B-trees, which trade tall-and-thin for short-and-wide to win on disk.",{"title":106,"path":107,"lessonNumber":108,"topics":109,"summary":112},"Disjoint Sets (Union-Find)","\u002Falgorithms\u002Fdata-structures\u002Funion-find",6,[110,111],"Disjoint Sets","Amortized Analysis","The disjoint-set data structure tracks a partition of elements into groups, answering \"are these two in the same group?\" and merging groups on demand. A forest of parent pointers, sped up by union by rank and path compression, drives every operation to near-constant $O(\\alpha(n))$ amortized time — the engine behind connectivity queries and Kruskal's minimum spanning tree.",{"title":114,"path":115,"lessonNumber":116,"topics":117,"summary":119},"Fenwick & Segment Trees","\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees",7,[118],"Range Queries","A prefix-sum array answers a range sum in $O(1)$ but pays $O(n)$ per update; a plain array updates in $O(1)$ but pays $O(n)$ per range sum. Fenwick and segment trees give us _both_ in $O(\\log n)$. The Fenwick (binary indexed) tree is a tiny array keyed by the low bit; the segment tree is a general balanced tree over canonical ranges that handles any associative aggregate and, with lazy propagation, range updates too.",{"module":121,"moduleNumber":102,"slug":122,"lessons":123},"Sequences & Strings","sequences",[124,130,135,141,147],{"title":125,"path":126,"lessonNumber":6,"topics":127,"summary":129},"Two Pointers, Sliding Windows & Prefix Sums","\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows",[128],"Array Techniques","A family of array idioms that collapse an obvious $O(n^2)$ scan into a single $O(n)$ pass by maintaining an invariant as indices move. We meet two pointers (converging on a sorted array, and a fast\u002Fslow pair for in-place rewriting), the sliding window (fixed and variable size, amortized $O(n)$), and prefix sums, which answer any range-sum in $O(1)$ and count subarrays summing to $k$.",{"title":131,"path":132,"lessonNumber":18,"topics":133,"summary":134},"Monotonic Stacks & Queues","\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks",[128],"A **monotonic stack** keeps its contents sorted by popping every element that would break the order before each push — turning a family of \"previous\u002Fnext greater (or smaller) element\" questions into a single $O(n)$ scan. We derive the next-greater-element routine and its amortized analysis, fuse two such scans to measure the **largest rectangle in a histogram** in linear time, and extend the idea to a **monotonic deque** that streams the **sliding-window maximum** in $O(n)$.",{"title":136,"path":137,"lessonNumber":24,"topics":138,"summary":140},"Binary Search on the Answer","\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer",[139],"Searching","Binary search is not really about arrays — it is about locating the boundary of a **monotone predicate** $p(x)$ in $O(\\log(\\text{range}))$ probes. We first pin down the half-open `while (lo \u003C hi)` template for $\\textsc{lower\\_bound}$ and $\\textsc{upper\\_bound}$, then generalize to \"binary search on the answer\": whenever feasibility is monotone in a numeric parameter, we binary search the parameter itself, calling a feasibility check at each step.",{"title":142,"path":143,"lessonNumber":73,"topics":144,"summary":146},"String Matching: Rabin–Karp, KMP & Z","\u002Falgorithms\u002Fsequences\u002Fstring-matching",[145],"Strings","Given a text $T$ of length $n$ and a pattern $P$ of length $m$, find every occurrence of $P$ in $T$. The naive scan costs $O(nm)$; we beat it three ways. Rabin–Karp uses a **rolling hash** to test alignments in $O(1)$ amortised each, with expected $O(n+m)$. KMP precomputes a **failure function** so the scan never re-reads a text character, for worst-case $O(n+m)$. The **Z-function** gives the same bound from a different angle and converts freely to KMP's table.",{"title":148,"path":149,"lessonNumber":102,"topics":150,"summary":151},"Tries & Prefix Trees","\u002Falgorithms\u002Fsequences\u002Ftries",[145],"A **trie** stores a set of strings in a tree keyed by _characters_, so that insert, search, and prefix-test all run in $O(L)$ time — the length of the key, _independent of how many keys are stored_. Shared prefixes are stored once, which makes tries the natural structure for autocomplete, wildcard dictionaries, board word-search, and — over the alphabet $\\{0,1\\}$ — the maximum-XOR-pair problem.",{"module":153,"moduleNumber":108,"slug":154,"lessons":155},"Graphs","graphs",[156,163,168,173,178,183,188,193,199],{"title":157,"path":158,"lessonNumber":6,"topics":159,"summary":162},"Graph Representations and Traversal","\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal",[160,161],"Graph Representations","Graph Traversal","A graph captures _relationships_ — who connects to whom. We fix the vocabulary, weigh the two standard representations (adjacency list versus matrix), then meet the two explorations you'll use constantly: breadth-first search, which finds shortest paths by number of edges, and depth-first search, whose discovery and finish times reveal a graph's hidden structure. Both run in $O(V + E)$.",{"title":164,"path":165,"lessonNumber":18,"topics":166,"summary":167},"Topological Sort and Strong Connectivity","\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc",[161],"Directed acyclic graphs model dependencies: tasks that must precede other tasks. A _topological order_ lays such a graph out in a line so every edge points forward, and depth-first finish times hand it to us almost for free. We then ask the harder question for graphs _with_ cycles: which vertices can reach each other? The answer is the strongly connected components, found by a two-pass DFS.",{"title":169,"path":170,"lessonNumber":24,"topics":171,"summary":172},"Minimum Spanning Trees","\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees",[169],"Given a weighted network, how do we connect everything as cheaply as possible? The answer is a minimum spanning tree. One lemma, the cut property, justifies _every_ correct MST algorithm, and from it two famous greedy methods fall out: Kruskal's, which grows a forest edge by edge with a union-find structure, and Prim's, which grows a single tree using a priority queue.",{"title":174,"path":175,"lessonNumber":73,"topics":176,"summary":177},"Shortest Paths","\u002Falgorithms\u002Fgraphs\u002Fshortest-paths",[174],"Finding the cheapest route through a weighted network is one of the most-used algorithms in computing. A single operation — _relaxation_ — underlies them all. Dijkstra's algorithm solves the non-negative case greedily; Bellman-Ford handles negative edges and detects negative cycles; and Floyd-Warshall finds the shortest path between _every_ pair of vertices.",{"title":179,"path":180,"lessonNumber":102,"topics":181,"summary":182},"Network Flow","\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow",[179],"How much can flow through a network from source to sink? Max-flow is a surprisingly general model — once you see a problem as flow, a whole toolbox opens up. We build flow networks, find maximum flows by repeatedly pushing along augmenting paths in the residual graph, prove the max-flow min-cut theorem, and watch bipartite matching fall out as a special case.",{"title":184,"path":185,"lessonNumber":108,"topics":186,"summary":187},"Bridges & Articulation Points","\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points",[153],"A **bridge** is an edge whose removal disconnects the graph; an **articulation point** is a vertex whose removal does. Both are single points of failure in a network. A single depth-first search computes discovery times and **low-links**, and two local criteria — $low[v] > disc[u]$ for bridges, $low[v] \\ge disc[u]$ for cut vertices — find them all in $O(V+E)$.",{"title":189,"path":190,"lessonNumber":116,"topics":191,"summary":192},"Lowest Common Ancestor & Binary Lifting","\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor",[153],"Given a rooted tree, the lowest common ancestor of $u$ and $v$ is the deepest node that is an ancestor of both. A naive walk answers one query in $O(h)$; **binary lifting** precomputes the $2^k$-th ancestor of every node in $O(n\\log n)$, then answers $k$-th-ancestor and LCA queries in $O(\\log n)$ each. We derive both jumps, apply them to tree distance, and compare against the Euler-tour + RMQ and Tarjan offline alternatives.",{"title":194,"path":195,"lessonNumber":196,"topics":197,"summary":198},"2-SAT via Implication Graphs","\u002Falgorithms\u002Fgraphs\u002Ftwo-sat",8,[153],"A boolean formula whose every clause has exactly two literals can be solved in _linear_ time — even though its three-literal cousin is NP-complete. The trick is to read each clause as a pair of implications, build a directed graph on the $2n$ literals, and ask a question we already know how to answer: which literals share a strongly connected component? The formula is satisfiable iff no variable lands in the same SCC as its own negation, and the SCCs' topological order hands us a satisfying assignment for free.",{"title":200,"path":201,"lessonNumber":202,"topics":203,"summary":204},"Eulerian Tours","\u002Falgorithms\u002Fgraphs\u002Feulerian-tours",9,[153],"An **Eulerian tour** uses every _edge_ of a graph exactly once. We give the exact parity and balance conditions under which one exists (even degree for undirected graphs, in-degree equal to out-degree for directed) and Hierholzer's $O(E)$ algorithm that constructs one by splicing closed sub-tours. We contrast this sharply with the **Hamiltonian** problem (visit every _vertex_ once), which is NP-complete: visiting edges is easy, visiting vertices is hard.",{"module":206,"moduleNumber":116,"slug":207,"lessons":208},"Greedy Algorithms","greedy",[209,214,220,225],{"title":210,"path":211,"lessonNumber":6,"topics":212,"summary":213},"The Greedy Method","\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method",[206],"A greedy algorithm builds a solution one locally-best choice at a time and never looks back. We pin down the two properties that make this work — the greedy-choice property and optimal substructure — prove the canonical activity-selection algorithm correct with an exchange argument, watch greedy fail spectacularly on the 0\u002F1 knapsack, and glimpse matroids as the theory that says exactly when greed is good.",{"title":215,"path":216,"lessonNumber":18,"topics":217,"summary":219},"Scheduling & Interval Partitioning","\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals",[218],"Greedy","Three classic scheduling problems all yield to greedy algorithms — and all three turn on a single design decision: which key to sort by. Interval scheduling sorts by **finish** time to pack the most compatible jobs; interval partitioning sorts by **start** time and proves the rooms needed equal the maximum overlap **depth**; minimizing maximum lateness sorts by **deadline** and is justified by an adjacent-swap exchange argument.",{"title":221,"path":222,"lessonNumber":24,"topics":223,"summary":224},"Huffman Codes","\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes",[206],"Huffman coding is the greedy method's most beautiful application: it builds a provably optimal prefix-free binary code by repeatedly merging the two least frequent symbols. We develop prefix-free codes as binary trees, give the algorithm with a priority queue, build a Huffman tree from example frequencies, prove optimality with the same greedy-choice-plus-substructure argument, and pin the running time at $O(n\\log n)$.",{"title":226,"path":227,"lessonNumber":73,"topics":228,"summary":229},"Matroids & Exchange Arguments","\u002Falgorithms\u002Fgreedy\u002Fmatroids",[218],"The capstone of the greedy module: _why_ and _when_ a greedy algorithm is provably optimal. We recap the two correctness templates — **greedy-stays-ahead** and the **exchange argument** — then meet the **matroid** $M=(S,\\mathcal{I})$, an abstraction whose **exchange property** is exactly the structure greedy needs. The matroid–greedy theorem says sorting by weight and taking what stays independent yields a maximum-weight basis _if and only if_ the structure is a matroid. Kruskal's MST is the canonical instance; 0\u002F1 knapsack and TSP are the canonical failures.",{"module":231,"moduleNumber":196,"slug":232,"lessons":233},"Dynamic Programming","dynamic-programming",[234,239,245,250,255,260,265,270,275,280],{"title":235,"path":236,"lessonNumber":6,"topics":237,"summary":238},"Principles of Dynamic Programming","\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples",[231,26],"Dynamic programming is recursion with memory: when a recursive solution re-solves the same subproblems again and again, we solve each one once and store the answer. We pin down the two structural conditions that make this work — overlapping subproblems and optimal substructure — contrast top-down memoization with bottom-up tabulation, and distil the whole method into a five-step recipe.",{"title":240,"path":241,"lessonNumber":18,"topics":242,"summary":244},"Sequence Alignment & LCS","\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp",[231,243],"String Structures","Two strings can be compared by asking how much of one survives inside the other. The longest common subsequence (LCS) and edit distance are the two classic answers, and they are the _same_ dynamic program wearing different costs. We derive the LCS recurrence by examining the last characters, fill a worked DP table, reconstruct the subsequence, and then show edit distance as the identical $\\Theta(mn)$ pattern.",{"title":246,"path":247,"lessonNumber":24,"topics":248,"summary":249},"Longest Increasing Subsequence","\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence",[231],"Given a sequence of numbers, how long is its longest strictly increasing subsequence? A first dynamic program indexes subproblems by the element each subsequence _ends at_, giving an $O(n^2)$ solution with parent-pointer reconstruction. A sharper idea, the patience-sorting _tails_ array searched by binary search, drops the time to $O(n\\log n)$. We then fold in the variants: non-decreasing, counting, Russian-doll envelopes, and bitonic.",{"title":251,"path":252,"lessonNumber":73,"topics":253,"summary":254},"Knapsack & Subset Problems","\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack",[231],"We start from $\\textsc{Subset-sum}$ — does some sublist hit a target $t$? — and its include\u002Fexclude recurrence over a boolean table $A(i, u)$, then bolt on values to get 0\u002F1 knapsack as the same machine with $\\lor$ promoted to $\\max$. We fill both tables, recover the chosen items, and confront the surprise that the $\\Theta(nt)$ running time is only _pseudo-polynomial_ — exponential in the bit length $b$, and unimprovable unless $\\mathrm{P}=\\mathrm{NP}$ since subset-sum is $\\textsc{NP-complete}$. The fractional variant reveals the sharp line between greedy and dynamic programming.",{"title":256,"path":257,"lessonNumber":102,"topics":258,"summary":259},"Coin Change & Unbounded Knapsack","\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded",[231],"The previous lesson let each item be taken at most once. Drop that cap — items may be reused _any number of times_ — and the 0\u002F1 knapsack collapses from a two-dimensional table to a one-dimensional one, because there is no longer a prefix of \"already-used\" items to track. We meet **unbounded knapsack**, then its most famous instance, **coin change**: the minimum-coins recurrence $C[a] = 1 + \\min_c C[a-c]$, and the counting variant where the _order of the loops_ decides whether you count unordered combinations or ordered sequences — the classic bug. Greed fails in general but works for canonical coin systems.",{"title":261,"path":262,"lessonNumber":108,"topics":263,"summary":264},"Interval DP","\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp",[231],"Many problems ask for the best way to combine a contiguous range of items, and the answer is a dynamic program over subintervals $[i,j]$ that chooses a split point $k$. We derive the pattern from matrix-chain multiplication — parenthesising a product to minimize scalar multiplications in $O(n^3)$ — distil it into a reusable template filled by increasing interval length, and then meet its sharpest variant: the \"last operation\" trick behind Burst Balloons and cutting a stick, where fixing the _last_ move (not the first) makes the two sides independent.",{"title":266,"path":267,"lessonNumber":116,"topics":268,"summary":269},"Dynamic Programming on Trees","\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp",[231],"When the subproblems of a dynamic program are _rooted subtrees_, a single post-order DFS solves the whole thing in $O(n)$: each node combines the already-computed answers of its children. We meet the archetype — maximum-weight independent set on a tree — then the \"path through a node\" pattern behind tree diameter and maximum path sum, and finally **rerooting**, which computes a per-node answer for _every_ node as root in $O(n)$ with two passes.",{"title":271,"path":272,"lessonNumber":196,"topics":273,"summary":274},"Bitmask DP","\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp",[231],"When a subproblem depends not on an index or a prefix but on _which subset_ of a small ground set has been used, we can encode that subset as the bits of an integer and index a DP table by it. With $n \\le \\sim 20$ the $2^n$ subsets fit in a table, turning $\\Theta(n!)$ brute force into $O(2^n \\cdot \\text{poly}(n))$. We meet the bit tricks, the Held–Karp TSP archetype, assignment by mask, subset-sum partitioning, and submask enumeration with its $3^n$ bound.",{"title":276,"path":277,"lessonNumber":202,"topics":278,"summary":279},"DP Optimizations","\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations",[231],"A correct DP recurrence is only half the battle; its naive evaluation is often a factor of $n$ slower than necessary. This capstone surveys five techniques, monotonic-queue, the convex hull trick, divide-and-conquer optimization, Knuth's optimization, and SOS DP, that each exploit _structure in the transition_ (a sliding window, linear costs, monotone optimal splits, the quadrangle inequality, or subset lattices) to shave an $O(n)$, $O(\\log n)$, or worse factor off the running time.",{"title":281,"path":282,"lessonNumber":283,"topics":284,"summary":285},"Dynamic Programming on Graphs","\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs",10,[231],"Many graph algorithms are dynamic programs in disguise: the subproblem is the _best value reachable under a restricted resource_ — intermediate vertices allowed, edges allowed, or a topological prefix — and edge _relaxation_ is the DP transition. We frame Floyd–Warshall as the archetype ($O(V^3)$ all-pairs shortest paths), Bellman–Ford as a DP over path length (the at-most-$K$-stops variant), DAG-DP in topological order ($O(V+E)$), and Warshall's transitive closure as the boolean analog.",{"module":287,"moduleNumber":202,"slug":288,"lessons":289},"Backtracking & Search","backtracking",[290,296,301],{"title":291,"path":292,"lessonNumber":6,"topics":293,"summary":295},"Backtracking: Subsets, Permutations & Combinations","\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals",[294],"Backtracking","Backtracking builds a solution one choice at a time and abandons a partial solution the moment it cannot be completed, exploring a state-space tree by depth-first search. We meet the universal choose\u002Fexplore\u002Fun-choose template, derive the canonical enumerations — subsets ($2^n$), permutations ($n!$), and combinations ($\\binom{n}{k}$) — handle duplicate elements by skipping equal siblings, and see how pruning turns an exponential search into a tractable one.",{"title":297,"path":298,"lessonNumber":18,"topics":299,"summary":300},"Constraint Search: N-Queens & Sudoku","\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search",[294],"Many hard puzzles are **constraint satisfaction problems**: assign each variable a value from its domain so that every constraint holds. Backtracking solves them by assigning variables one at a time and rejecting a partial assignment the instant a constraint breaks. We make the rejection cheap — $O(1)$ conflict checks for N-Queens via column and diagonal sets — and prune harder with **forward checking**, **MRV** ordering, and **constraint propagation**, which is what lets an exponential search actually finish.",{"title":302,"path":303,"lessonNumber":24,"topics":304,"summary":305},"Branch & Bound and Meet in the Middle","\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound",[294],"Plain backtracking prunes a search tree by _feasibility_; for _optimization_ problems we can prune far more aggressively by _value_. **Branch and bound** keeps the best complete solution found so far and discards any partial solution whose optimistic bound cannot beat it. **Meet in the middle** splits the instance in two, enumerates each half, and recombines by binary search — turning $2^n$ into $O(2^{n\u002F2}\\,n)$ and pushing exact search out to $n \\approx 40$.",{"module":307,"moduleNumber":283,"slug":308,"lessons":309},"Mathematical Algorithms","mathematical-algorithms",[310,316,321,326],{"title":311,"path":312,"lessonNumber":6,"topics":313,"summary":315},"Number Theory: GCD & Modular Arithmetic","\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics",[314],"Number Theory","This lesson opens the mathematical-algorithms module with the bedrock of computational number theory. We prove Euclid's recurrence $\\gcd(a,b)=\\gcd(b,\\,a\\bmod b)$ and its $O(\\log\\min(a,b))$ running time, extend it to recover Bézout coefficients $x,y$ with $ax+by=\\gcd(a,b)$, and build modular arithmetic on residue classes — including when a modular inverse $a^{-1}\\bmod m$ exists and how to compute it.",{"title":317,"path":318,"lessonNumber":18,"topics":319,"summary":320},"Modular Exponentiation & Primality","\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality",[314],"Computing $a^n \\bmod m$ naively costs $n$ multiplications; **repeated squaring** does it in $O(\\log n)$ by reading the bits of the exponent. We use this routine to state **Fermat's little theorem** (and the modular inverse it gives), then to test primality — trial division, the probabilistic **Fermat** and **Miller–Rabin** tests, and the deterministic witness set that settles primality for every 64-bit number.",{"title":322,"path":323,"lessonNumber":24,"topics":324,"summary":325},"Sieves & Factorization","\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization",[314],"The previous lesson tested one number for primality; here we ask for _all_ primes up to $n$ at once. The **sieve of Eratosthenes** cross-cuts composites in $O(n\\log\\log n)$, and a **linear sieve** does it in $O(n)$ while recording each number's **smallest prime factor**, which then factors any $x \\le n$ in $O(\\log x)$. From a factorization $x = \\prod p_i^{e_i}$ the multiplicative functions $\\tau$, $\\sigma$, and Euler's totient $\\varphi$ fall out immediately.",{"title":327,"path":328,"lessonNumber":73,"topics":329,"summary":330},"Combinatorics & Counting","\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics",[314],"Counting is the arithmetic of finite sets. We build up from permutations $n!$ and combinations $\\binom{n}{k}$, prove Pascal's rule by a bijection, and count multisets with stars and bars. The practical core is computing $\\binom{n}{k}\\bmod p$ in $O(1)$ from precomputed factorials and inverse factorials. We close with inclusion–exclusion and the Chinese Remainder Theorem, both of which lean on the modular inverse from the previous lesson.",{"module":332,"moduleNumber":333,"slug":334,"lessons":335},"Computational Geometry",11,"computational-geometry",[336,342,347],{"title":337,"path":338,"lessonNumber":6,"topics":339,"summary":341},"Geometric Primitives & Orientation","\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives",[340],"Geometry","Computational geometry is built on a single reliable primitive — the **orientation test**, a sign of a cross product that tells whether three points turn left, right, or lie collinear. From points-as-vectors and the dot and cross products we derive orientation, segment intersection, the shoelace area formula, and point-in-polygon tests, keeping all arithmetic **exact and integer** so that no floating-point rounding can corrupt a sign.",{"title":343,"path":344,"lessonNumber":18,"topics":345,"summary":346},"Convex Hull","\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull",[340],"The convex hull is the smallest convex polygon enclosing a point set — the rubber band snapped around the nails. We build it with Andrew's monotone chain, sorting by $(x,y)$ and sweeping a lower and upper hull while popping any non-left turn via the orientation primitive, in $O(n\\log n)$. A reduction from sorting shows that bound is optimal, and the hull unlocks diameter, smallest enclosing rectangle, and more through rotating calipers.",{"title":348,"path":349,"lessonNumber":24,"topics":350,"summary":351},"Sweep-Line Algorithms","\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line",[340],"The plane-sweep paradigm turns a static $2$-D geometry problem into a dynamic $1$-D ordered-set problem: a vertical line sweeps left to right, stopping at an $x$-sorted **event queue** while a balanced-BST **status structure** tracks the objects it currently crosses, ordered by $y$. We derive Bentley–Ottmann segment intersection in $O((n+k)\\log n)$, recover closest-pair in $O(n\\log n)$, and reduce skyline, rectangle-area, and overlap problems to $\\pm1$ event sweeps.",{"module":353,"moduleNumber":354,"slug":355,"lessons":356},"Intractability",12,"intractability",[357,363,367],{"title":358,"path":359,"lessonNumber":6,"topics":360,"summary":362},"P, NP, and Reductions","\u002Falgorithms\u002Fintractability\u002Fp-np-reductions",[361],"NP-Completeness","Most problems we have met so far have fast algorithms. A vast and important family seemingly does not. This lesson builds the vocabulary for that divide: decision problems, the class $\\mathsf{P}$ of problems we can solve quickly, the class $\\mathsf{NP}$ of problems whose solutions we can _check_ quickly, and polynomial-time reductions, the tool that lets us compare the difficulty of two problems without solving either.",{"title":361,"path":364,"lessonNumber":18,"topics":365,"summary":366},"\u002Falgorithms\u002Fintractability\u002Fnp-completeness",[361],"Some problems in $\\mathsf{NP}$ are universally hardest: every other problem in $\\mathsf{NP}$ reduces to them. This lesson defines $\\mathsf{NP}$-hard and $\\mathsf{NP}$-complete, states the Cook–Levin theorem that anchors the whole edifice on **SAT**, walks the web of reductions that grows from it, and gives the four-step recipe for proving a brand-new problem $\\mathsf{NP}$-complete.",{"title":368,"path":369,"lessonNumber":24,"topics":370,"summary":373},"Coping with NP-Hardness","\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness",[371,372],"Approximation","Heuristics","Proving a problem $\\mathsf{NP}$-hard is the beginning, not the end. The world still needs answers. This lesson surveys the four honest responses to hardness: approximation algorithms with a provable ratio (worked through a 2-approximation for vertex cover), heuristics and local search, exact exponential methods like branch and bound, and exploiting special structure in the instances you actually face.",{"id":375,"title":184,"blurb":376,"body":377,"description":5880,"extension":5881,"meta":5882,"module":153,"navigation":4944,"path":185,"practice":5884,"rawbody":5896,"readingTime":5897,"seo":5902,"sources":5903,"status":5910,"stem":5911,"summary":187,"topics":5912,"__hash__":5913},"course\u002F01.algorithms\u002F06.graphs\u002F06.bridges-and-articulation-points.md","",{"type":378,"value":379,"toc":5872},"minimark",[380,398,450,489,683,688,695,712,1057,1068,1171,1506,1731,2025,2608,2612,2779,3280,3284,3326,3535,3541,4027,4377,4781,4785,4910,5029,5212,5342,5346,5817,5868],[381,382,383,384,388,389,392,393,397],"p",{},"We have seen ",[385,386,387],"a",{"href":158},"depth-first search","\nlay a tree over a graph, and we used that tree to\ndirect edges, find cycles, and decompose a digraph into ",[385,390,391],{"href":165},"strongly connected\ncomponents",". This lesson turns the\nsame machinery on a different question, one that\nmatters whenever a graph models a ",[394,395,396],"em",{},"network",". Which parts of it are fragile? If a\nsingle fiber link is cut or a single router fails, does the network split into\npieces that can no longer reach one another? These single points of failure have\nnames.",[399,400,402],"callout",{"type":401},"definition",[381,403,404,408,409,434,435,438,439,442,443,438,446,449],{},[405,406,407],"strong",{},"Definition."," In a connected undirected graph ",[410,411,414],"span",{"className":412},[413],"katex",[410,415,419],{"className":416,"ariaHidden":418},[417],"katex-html","true",[410,420,423,428],{"className":421},[422],"base",[410,424],{"className":425,"style":427},[426],"strut","height:0.6833em;",[410,429,433],{"className":430},[431,432],"mord","mathnormal","G",", a ",[405,436,437],{},"bridge"," (or ",[394,440,441],{},"cut\nedge",") is an edge whose removal increases the number of connected components.\nAn ",[405,444,445],{},"articulation point",[394,447,448],{},"cut vertex",") is a vertex whose removal, together\nwith its incident edges, increases the number of connected components.",[381,451,452,453,456,457,460,461,464,465,475,476,479,480,484,485,488],{},"A graph with no bridges is ",[405,454,455],{},"2-edge-connected",": you must cut at least two edges\nto disconnect it, so every pair of vertices is joined by two edge-disjoint paths.\nA graph with no articulation points (and at least three vertices) is\n",[405,458,459],{},"2-vertex-connected",", or ",[405,462,463],{},"biconnected",": two vertex-disjoint paths between every\npair.",[466,467,468],"sup",{},[385,469,474],{"href":470,"ariaDescribedBy":471,"dataFootnoteRef":376,"id":473},"#user-content-fn-skiena-conn",[472],"footnote-label","user-content-fnref-skiena-conn","1"," The maximal biconnected subgraphs are the ",[405,477,478],{},"biconnected\ncomponents","; bridges and cut vertices are exactly the seams where they meet. So\nthe question ",[481,482,483],"q",{},"where is my network fragile?"," is the question ",[481,486,487],{},"find the cut edges and cut vertices,"," and the surprise is that one DFS answers it.",[490,491,495,627],"figure",{"className":492},[493,494],"tikz-figure","tikz-diagram-rendered",[496,497,502],"svg",{"xmlns":498,"width":499,"height":500,"viewBox":501},"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","286.775","145.314","-75 -75 215.081 108.986",[503,504,507,512,521,524,531,534,541,544,551,554,572,575,582,585,592,595,600],"g",{"stroke":505,"style":506},"currentColor","stroke-miterlimit:10;stroke-width:.4",[508,509],"path",{"fill":510,"d":511},"none","M-45.486-53.576c0-5.5-4.459-9.958-9.959-9.958s-9.958 4.458-9.958 9.958 4.458 9.959 9.958 9.959 9.959-4.459 9.959-9.959Zm-9.959 0",[503,513,515],{"transform":514},"translate(-2.45 -37.896)",[508,516],{"d":517,"fill":505,"stroke":505,"className":518,"style":520},"M-53.823-13.641Q-54.219-13.641-54.505-13.845Q-54.790-14.050-54.937-14.384Q-55.085-14.718-55.085-15.109Q-55.085-15.544-54.911-16.005Q-54.737-16.467-54.425-16.858Q-54.113-17.249-53.703-17.484Q-53.292-17.719-52.852-17.719Q-52.584-17.719-52.367-17.581Q-52.149-17.442-52.017-17.196Q-51.978-17.346-51.870-17.442Q-51.762-17.539-51.622-17.539Q-51.499-17.539-51.415-17.466Q-51.332-17.394-51.332-17.271Q-51.332-17.218-51.341-17.187L-51.960-14.696Q-52.017-14.498-52.017-14.300Q-52.017-13.905-51.754-13.905Q-51.468-13.905-51.334-14.228Q-51.200-14.551-51.081-15.056Q-51.072-15.087-51.048-15.111Q-51.024-15.135-50.989-15.135L-50.883-15.135Q-50.835-15.135-50.813-15.102Q-50.791-15.069-50.791-15.021Q-50.905-14.590-50.996-14.337Q-51.086-14.085-51.279-13.863Q-51.472-13.641-51.771-13.641Q-52.079-13.641-52.327-13.812Q-52.575-13.984-52.646-14.274Q-52.901-13.988-53.197-13.815Q-53.494-13.641-53.823-13.641M-53.806-13.905Q-53.476-13.905-53.166-14.146Q-52.857-14.388-52.646-14.704Q-52.637-14.713-52.637-14.731L-52.140-16.695Q-52.197-17.012-52.389-17.236Q-52.580-17.460-52.870-17.460Q-53.239-17.460-53.538-17.141Q-53.837-16.823-54.004-16.414Q-54.140-16.067-54.265-15.557Q-54.390-15.047-54.390-14.722Q-54.390-14.397-54.252-14.151Q-54.113-13.905-53.806-13.905",[519],"tikz-text","stroke-width:0.270",[508,522],{"fill":510,"d":523},"M-5.653-53.576c0-5.5-4.458-9.958-9.958-9.958s-9.959 4.458-9.959 9.958 4.459 9.959 9.959 9.959 9.958-4.459 9.958-9.959Zm-9.958 0",[503,525,527],{"transform":526},"translate(37.852 -36.709)",[508,528],{"d":529,"fill":505,"stroke":505,"className":530,"style":520},"M-53.823-13.641Q-54.399-13.641-54.720-14.072Q-55.041-14.502-55.041-15.082Q-55.041-15.487-54.957-15.715L-54.078-19.213Q-54.043-19.363-54.043-19.437Q-54.043-19.574-54.610-19.574Q-54.707-19.574-54.707-19.692Q-54.707-19.749-54.676-19.820Q-54.645-19.890-54.579-19.890L-53.358-19.987Q-53.305-19.987-53.272-19.958Q-53.239-19.930-53.239-19.881L-53.239-19.846L-53.898-17.236Q-53.375-17.719-52.852-17.719Q-52.466-17.719-52.175-17.515Q-51.885-17.310-51.738-16.976Q-51.591-16.642-51.591-16.251Q-51.591-15.667-51.894-15.058Q-52.197-14.450-52.718-14.045Q-53.239-13.641-53.823-13.641M-53.806-13.905Q-53.437-13.905-53.133-14.228Q-52.830-14.551-52.672-14.946Q-52.527-15.302-52.406-15.810Q-52.285-16.317-52.285-16.638Q-52.285-16.963-52.430-17.211Q-52.575-17.460-52.870-17.460Q-53.472-17.460-54.043-16.660L-54.285-15.667Q-54.430-15.043-54.430-14.779Q-54.430-14.436-54.278-14.170Q-54.127-13.905-53.806-13.905",[519],[508,532],{"fill":510,"d":533},"M-5.653-13.742c0-5.5-4.458-9.958-9.958-9.958s-9.959 4.458-9.959 9.958 4.459 9.958 9.959 9.958 9.958-4.458 9.958-9.958Zm-9.958 0",[503,535,537],{"transform":536},"translate(37.831 1.937)",[508,538],{"d":539,"fill":505,"stroke":505,"className":540,"style":520},"M-54.355-14.849Q-54.355-14.454-54.142-14.179Q-53.929-13.905-53.547-13.905Q-53.002-13.905-52.496-14.140Q-51.991-14.375-51.674-14.797Q-51.653-14.832-51.591-14.832Q-51.534-14.832-51.488-14.781Q-51.442-14.731-51.442-14.678Q-51.442-14.643-51.468-14.617Q-51.815-14.142-52.378-13.891Q-52.940-13.641-53.564-13.641Q-53.995-13.641-54.344-13.843Q-54.694-14.045-54.885-14.401Q-55.076-14.757-55.076-15.183Q-55.076-15.645-54.874-16.102Q-54.672-16.559-54.316-16.928Q-53.960-17.297-53.516-17.508Q-53.072-17.719-52.602-17.719Q-52.334-17.719-52.085-17.638Q-51.837-17.556-51.670-17.378Q-51.503-17.200-51.503-16.937Q-51.503-16.700-51.653-16.522Q-51.802-16.344-52.035-16.344Q-52.175-16.344-52.281-16.438Q-52.386-16.533-52.386-16.678Q-52.386-16.880-52.239-17.034Q-52.092-17.187-51.890-17.187Q-51.995-17.328-52.200-17.394Q-52.404-17.460-52.611-17.460Q-53.147-17.460-53.544-17.031Q-53.942-16.603-54.149-15.983Q-54.355-15.364-54.355-14.849",[519],[508,542],{"fill":510,"d":543},"M-45.486-13.742c0-5.5-4.459-9.958-9.959-9.958s-9.958 4.458-9.958 9.958 4.458 9.958 9.958 9.958 9.959-4.458 9.959-9.958Zm-9.959 0",[503,545,547],{"transform":546},"translate(-2.396 3.125)",[508,548],{"d":549,"fill":505,"stroke":505,"className":550,"style":520},"M-53.823-13.641Q-54.219-13.641-54.505-13.845Q-54.790-14.050-54.937-14.384Q-55.085-14.718-55.085-15.109Q-55.085-15.544-54.911-16.005Q-54.737-16.467-54.425-16.858Q-54.113-17.249-53.703-17.484Q-53.292-17.719-52.852-17.719Q-52.584-17.719-52.367-17.581Q-52.149-17.442-52.017-17.196L-51.512-19.213Q-51.477-19.363-51.477-19.437Q-51.477-19.574-52.044-19.574Q-52.140-19.574-52.140-19.692Q-52.140-19.749-52.110-19.820Q-52.079-19.890-52.017-19.890L-50.791-19.987Q-50.738-19.987-50.708-19.958Q-50.677-19.930-50.677-19.881L-50.677-19.846L-51.960-14.696Q-51.960-14.638-51.989-14.507Q-52.017-14.375-52.017-14.300Q-52.017-13.905-51.754-13.905Q-51.468-13.905-51.334-14.228Q-51.200-14.551-51.081-15.056Q-51.072-15.087-51.048-15.111Q-51.024-15.135-50.989-15.135L-50.883-15.135Q-50.835-15.135-50.813-15.102Q-50.791-15.069-50.791-15.021Q-50.905-14.590-50.996-14.337Q-51.086-14.085-51.279-13.863Q-51.472-13.641-51.771-13.641Q-52.079-13.641-52.327-13.812Q-52.575-13.984-52.646-14.274Q-52.901-13.988-53.197-13.815Q-53.494-13.641-53.823-13.641M-53.806-13.905Q-53.476-13.905-53.166-14.146Q-52.857-14.388-52.646-14.704Q-52.637-14.713-52.637-14.740L-52.140-16.695Q-52.197-17.012-52.389-17.236Q-52.580-17.460-52.870-17.460Q-53.239-17.460-53.538-17.141Q-53.837-16.823-54.004-16.414Q-54.140-16.067-54.265-15.557Q-54.390-15.047-54.390-14.722Q-54.390-14.397-54.252-14.151Q-54.113-13.905-53.806-13.905",[519],[508,552],{"fill":510,"d":553},"M-45.286-53.576h19.516m10.159 10.159V-23.9M-25.77-13.742h-19.516M-55.445-23.9v-19.517",[503,555,558,566],{"stroke":510,"fontFamily":556,"fontSize":557},"cmr8","8",[503,559,561],{"transform":560},"translate(2.44 24.762)",[508,562],{"d":563,"fill":505,"stroke":505,"className":564,"style":565},"M-53.277-13.742L-55.133-13.742L-55.133-14.039Q-54.859-14.039-54.691-14.086Q-54.523-14.133-54.523-14.301L-54.523-16.437Q-54.523-16.652-54.586-16.748Q-54.648-16.844-54.767-16.865Q-54.886-16.887-55.133-16.887L-55.133-17.183L-53.941-17.269L-53.941-16.535Q-53.828-16.750-53.634-16.918Q-53.441-17.086-53.203-17.178Q-52.965-17.269-52.711-17.269Q-51.543-17.269-51.543-16.191L-51.543-14.301Q-51.543-14.133-51.373-14.086Q-51.203-14.039-50.933-14.039L-50.933-13.742L-52.789-13.742L-52.789-14.039Q-52.515-14.039-52.347-14.086Q-52.179-14.133-52.179-14.301L-52.179-16.176Q-52.179-16.558-52.300-16.787Q-52.422-17.015-52.773-17.015Q-53.086-17.015-53.340-16.853Q-53.593-16.691-53.740-16.422Q-53.886-16.152-53.886-15.855L-53.886-14.301Q-53.886-14.133-53.716-14.086Q-53.547-14.039-53.277-14.039L-53.277-13.742M-50.488-15.437Q-50.488-15.941-50.232-16.373Q-49.976-16.805-49.541-17.056Q-49.105-17.308-48.605-17.308Q-48.218-17.308-47.877-17.164Q-47.535-17.019-47.273-16.758Q-47.011-16.496-46.869-16.160Q-46.726-15.824-46.726-15.437Q-46.726-14.945-46.990-14.535Q-47.254-14.125-47.683-13.894Q-48.113-13.664-48.605-13.664Q-49.097-13.664-49.531-13.896Q-49.965-14.129-50.226-14.537Q-50.488-14.945-50.488-15.437M-48.605-13.941Q-48.148-13.941-47.896-14.164Q-47.644-14.387-47.556-14.738Q-47.468-15.090-47.468-15.535Q-47.468-15.965-47.562-16.303Q-47.656-16.640-47.910-16.847Q-48.164-17.055-48.605-17.055Q-49.254-17.055-49.498-16.638Q-49.742-16.222-49.742-15.535Q-49.742-15.090-49.654-14.738Q-49.566-14.387-49.314-14.164Q-49.062-13.941-48.605-13.941",[519],"stroke-width:0.240",[503,567,568],{"transform":560},[508,569],{"d":570,"fill":505,"stroke":505,"className":571,"style":565},"M-42.487-13.742L-42.768-13.742L-42.768-18.461Q-42.768-18.676-42.830-18.771Q-42.893-18.867-43.010-18.888Q-43.127-18.910-43.373-18.910L-43.373-19.207L-42.151-19.293L-42.151-16.805Q-41.674-17.269-40.975-17.269Q-40.494-17.269-40.086-17.025Q-39.678-16.781-39.442-16.367Q-39.205-15.953-39.205-15.469Q-39.205-15.094-39.354-14.765Q-39.502-14.437-39.772-14.185Q-40.041-13.933-40.385-13.799Q-40.729-13.664-41.088-13.664Q-41.409-13.664-41.707-13.812Q-42.006-13.961-42.213-14.222L-42.487-13.742M-42.127-16.414L-42.127-14.574Q-41.975-14.277-41.715-14.097Q-41.455-13.918-41.143-13.918Q-40.717-13.918-40.450-14.137Q-40.182-14.355-40.067-14.701Q-39.952-15.047-39.952-15.469Q-39.952-16.117-40.200-16.566Q-40.448-17.015-41.045-17.015Q-41.381-17.015-41.670-16.857Q-41.959-16.699-42.127-16.414M-36.674-13.742L-38.655-13.742L-38.655-14.039Q-38.385-14.039-38.217-14.084Q-38.049-14.129-38.049-14.301L-38.049-16.437Q-38.049-16.652-38.112-16.748Q-38.174-16.844-38.291-16.865Q-38.409-16.887-38.655-16.887L-38.655-17.183L-37.487-17.269L-37.487-16.484Q-37.409-16.695-37.256-16.881Q-37.104-17.066-36.905-17.168Q-36.705-17.269-36.479-17.269Q-36.233-17.269-36.041-17.125Q-35.850-16.980-35.850-16.750Q-35.850-16.594-35.955-16.484Q-36.061-16.375-36.217-16.375Q-36.373-16.375-36.483-16.484Q-36.592-16.594-36.592-16.750Q-36.592-16.910-36.487-17.015Q-36.811-17.015-37.026-16.787Q-37.241-16.558-37.336-16.219Q-37.432-15.879-37.432-15.574L-37.432-14.301Q-37.432-14.133-37.205-14.086Q-36.979-14.039-36.674-14.039L-36.674-13.742M-33.510-13.742L-35.287-13.742L-35.287-14.039Q-35.014-14.039-34.846-14.086Q-34.678-14.133-34.678-14.301L-34.678-16.437Q-34.678-16.652-34.735-16.748Q-34.791-16.844-34.905-16.865Q-35.018-16.887-35.264-16.887L-35.264-17.183L-34.065-17.269L-34.065-14.301Q-34.065-14.133-33.918-14.086Q-33.772-14.039-33.510-14.039L-33.510-13.742M-34.952-18.664Q-34.952-18.855-34.817-18.986Q-34.682-19.117-34.487-19.117Q-34.366-19.117-34.262-19.055Q-34.159-18.992-34.096-18.888Q-34.034-18.785-34.034-18.664Q-34.034-18.469-34.164-18.334Q-34.295-18.199-34.487-18.199Q-34.686-18.199-34.819-18.332Q-34.952-18.465-34.952-18.664M-31.194-13.664Q-31.674-13.664-32.082-13.908Q-32.491-14.152-32.729-14.566Q-32.967-14.980-32.967-15.469Q-32.967-15.961-32.709-16.377Q-32.452-16.793-32.020-17.031Q-31.588-17.269-31.096-17.269Q-30.475-17.269-30.026-16.832L-30.026-18.461Q-30.026-18.676-30.088-18.771Q-30.151-18.867-30.268-18.888Q-30.385-18.910-30.631-18.910L-30.631-19.207L-29.409-19.293L-29.409-14.484Q-29.409-14.273-29.346-14.178Q-29.284-14.082-29.166-14.060Q-29.049-14.039-28.799-14.039L-28.799-13.742L-30.049-13.664L-30.049-14.148Q-30.514-13.664-31.194-13.664M-31.127-13.918Q-30.787-13.918-30.494-14.109Q-30.202-14.301-30.049-14.597L-30.049-16.430Q-30.198-16.703-30.459-16.859Q-30.721-17.015-31.034-17.015Q-31.659-17.015-31.942-16.568Q-32.225-16.121-32.225-15.461Q-32.225-14.816-31.973-14.367Q-31.721-13.918-31.127-13.918M-28.291-13.133Q-28.291-13.414-28.080-13.625Q-27.869-13.836-27.584-13.926Q-27.741-14.051-27.819-14.240Q-27.897-14.430-27.897-14.629Q-27.897-14.984-27.666-15.277Q-28.034-15.617-28.034-16.086Q-28.034-16.437-27.830-16.707Q-27.627-16.976-27.307-17.123Q-26.987-17.269-26.643-17.269Q-26.123-17.269-25.752-16.988Q-25.389-17.359-24.842-17.359Q-24.662-17.359-24.535-17.232Q-24.409-17.105-24.409-16.926Q-24.409-16.820-24.487-16.742Q-24.565-16.664-24.674-16.664Q-24.784-16.664-24.860-16.740Q-24.936-16.816-24.936-16.926Q-24.936-17.027-24.897-17.078Q-24.889-17.086-24.885-17.092Q-24.881-17.097-24.881-17.101Q-25.256-17.101-25.577-16.847Q-25.256-16.508-25.256-16.086Q-25.256-15.816-25.373-15.599Q-25.491-15.383-25.696-15.224Q-25.901-15.066-26.143-14.984Q-26.385-14.902-26.643-14.902Q-26.862-14.902-27.075-14.961Q-27.287-15.019-27.483-15.140Q-27.577-15-27.577-14.820Q-27.577-14.613-27.440-14.461Q-27.303-14.308-27.096-14.308L-26.401-14.308Q-25.912-14.308-25.500-14.224Q-25.088-14.140-24.809-13.883Q-24.530-13.625-24.530-13.133Q-24.530-12.769-24.850-12.537Q-25.170-12.305-25.612-12.203Q-26.053-12.101-26.409-12.101Q-26.764-12.101-27.207-12.203Q-27.651-12.305-27.971-12.537Q-28.291-12.769-28.291-13.133M-27.787-13.133Q-27.787-12.937-27.643-12.789Q-27.498-12.640-27.285-12.551Q-27.073-12.461-26.832-12.414Q-26.592-12.367-26.409-12.367Q-26.166-12.367-25.836-12.445Q-25.506-12.523-25.270-12.697Q-25.034-12.871-25.034-13.133Q-25.034-13.539-25.444-13.648Q-25.854-13.758-26.416-13.758L-27.096-13.758Q-27.366-13.758-27.577-13.580Q-27.787-13.402-27.787-13.133M-26.643-15.168Q-25.920-15.168-25.920-16.086Q-25.920-17.008-26.643-17.008Q-27.369-17.008-27.369-16.086Q-27.369-15.168-26.643-15.168M-24.045-15.496Q-24.045-15.976-23.813-16.392Q-23.580-16.808-23.170-17.058Q-22.760-17.308-22.284-17.308Q-21.553-17.308-21.155-16.867Q-20.756-16.426-20.756-15.695Q-20.756-15.590-20.850-15.566L-23.299-15.566L-23.299-15.496Q-23.299-15.086-23.178-14.730Q-23.057-14.375-22.785-14.158Q-22.514-13.941-22.084-13.941Q-21.721-13.941-21.424-14.170Q-21.127-14.398-21.026-14.750Q-21.018-14.797-20.932-14.812L-20.850-14.812Q-20.756-14.785-20.756-14.703Q-20.756-14.695-20.764-14.664Q-20.827-14.437-20.965-14.254Q-21.104-14.070-21.295-13.937Q-21.487-13.805-21.705-13.734Q-21.924-13.664-22.162-13.664Q-22.534-13.664-22.871-13.801Q-23.209-13.937-23.477-14.189Q-23.744-14.441-23.895-14.781Q-24.045-15.121-24.045-15.496M-23.291-15.805L-21.330-15.805Q-21.330-16.109-21.432-16.400Q-21.534-16.691-21.750-16.873Q-21.967-17.055-22.284-17.055Q-22.584-17.055-22.815-16.867Q-23.045-16.680-23.168-16.388Q-23.291-16.097-23.291-15.805",[519],[508,573],{"fill":510,"d":574},"M68.325-33.659c0-5.5-4.459-9.958-9.959-9.958s-9.958 4.458-9.958 9.958 4.458 9.959 9.958 9.959 9.959-4.459 9.959-9.959Zm-9.959 0",[503,576,578],{"transform":577},"translate(111.15 -17.98)",[508,579],{"d":580,"fill":505,"stroke":505,"className":581,"style":520},"M-54.447-14.740Q-54.447-15.025-54.371-15.344Q-54.294-15.662-54.179-15.963Q-54.065-16.264-53.907-16.669Q-53.788-16.954-53.788-17.187Q-53.788-17.306-53.834-17.383Q-53.881-17.460-53.986-17.460Q-54.338-17.460-54.573-17.099Q-54.808-16.739-54.913-16.308Q-54.931-16.225-55.006-16.225L-55.111-16.225Q-55.159-16.225-55.181-16.264Q-55.203-16.304-55.203-16.344Q-55.115-16.686-54.955-16.992Q-54.795-17.297-54.544-17.508Q-54.294-17.719-53.968-17.719Q-53.630-17.719-53.399-17.510Q-53.169-17.302-53.169-16.963Q-53.169-16.783-53.230-16.629Q-53.261-16.541-53.413-16.146Q-53.564-15.750-53.634-15.520Q-53.705-15.289-53.751-15.065Q-53.797-14.841-53.797-14.617Q-53.797-14.318-53.667-14.111Q-53.538-13.905-53.257-13.905Q-52.663-13.905-52.233-14.617Q-52.233-14.643-52.215-14.731L-51.573-17.306Q-51.538-17.447-51.424-17.534Q-51.310-17.622-51.169-17.622Q-51.055-17.622-50.974-17.545Q-50.892-17.469-50.892-17.350Q-50.892-17.297-50.901-17.271L-51.538-14.696Q-51.591-14.493-51.591-14.300Q-51.591-13.905-51.332-13.905Q-51.046-13.905-50.908-14.239Q-50.769-14.573-50.655-15.056Q-50.646-15.087-50.622-15.111Q-50.598-15.135-50.567-15.135L-50.457-15.135Q-50.413-15.135-50.391-15.102Q-50.369-15.069-50.369-15.021Q-50.484-14.590-50.574-14.337Q-50.664-14.085-50.857-13.863Q-51.050-13.641-51.349-13.641Q-51.635-13.641-51.870-13.790Q-52.105-13.940-52.206-14.208Q-52.417-13.949-52.685-13.795Q-52.953-13.641-53.265-13.641Q-53.630-13.641-53.894-13.768Q-54.157-13.896-54.302-14.142Q-54.447-14.388-54.447-14.740",[519],[508,583],{"fill":510,"d":584},"M113.85-33.659c0-5.5-4.46-9.958-9.96-9.958s-9.958 4.458-9.958 9.958 4.459 9.959 9.959 9.959 9.958-4.459 9.958-9.959Zm-9.96 0",[503,586,588],{"transform":587},"translate(156.928 -17.98)",[508,589],{"d":590,"fill":505,"stroke":505,"className":591,"style":520},"M-54.439-14.788Q-54.439-14.986-54.386-15.243Q-54.333-15.500-54.272-15.693Q-54.210-15.887-54.100-16.170Q-53.990-16.453-53.907-16.669Q-53.788-16.954-53.788-17.187Q-53.788-17.306-53.834-17.383Q-53.881-17.460-53.986-17.460Q-54.338-17.460-54.573-17.099Q-54.808-16.739-54.913-16.308Q-54.931-16.225-55.006-16.225L-55.111-16.225Q-55.159-16.225-55.181-16.264Q-55.203-16.304-55.203-16.344Q-55.115-16.686-54.955-16.992Q-54.795-17.297-54.544-17.508Q-54.294-17.719-53.968-17.719Q-53.630-17.719-53.399-17.513Q-53.169-17.306-53.169-16.963Q-53.169-16.783-53.230-16.629Q-53.322-16.383-53.439-16.080Q-53.555-15.777-53.626-15.550Q-53.696-15.324-53.742-15.104Q-53.788-14.885-53.788-14.669Q-53.788-14.326-53.623-14.116Q-53.459-13.905-53.125-13.905Q-52.470-13.905-51.991-14.885Q-51.846-15.166-51.701-15.583Q-51.556-16.001-51.556-16.260Q-51.556-16.515-51.635-16.658Q-51.714-16.801-51.866-16.981Q-52.017-17.161-52.017-17.253Q-52.017-17.433-51.870-17.581Q-51.723-17.728-51.538-17.728Q-51.314-17.728-51.215-17.521Q-51.116-17.315-51.116-17.064Q-51.116-16.642-51.257-16.065Q-51.398-15.487-51.666-14.926Q-51.934-14.366-52.310-14.003Q-52.685-13.641-53.142-13.641Q-53.727-13.641-54.083-13.927Q-54.439-14.212-54.439-14.788",[519],[508,593],{"fill":510,"d":594},"M45.562-62.112c0-5.5-4.458-9.958-9.958-9.958s-9.959 4.458-9.959 9.958 4.459 9.959 9.959 9.959 9.958-4.459 9.958-9.959ZM45.562-5.206c0-5.5-4.458-9.959-9.958-9.959s-9.959 4.459-9.959 9.959 4.459 9.958 9.959 9.958 9.958-4.458 9.958-9.958ZM136.61-62.112c0-5.5-4.458-9.958-9.958-9.958s-9.958 4.458-9.958 9.958 4.459 9.959 9.958 9.959 9.959-4.459 9.959-9.959ZM136.61-5.206c0-5.5-4.458-9.959-9.958-9.959s-9.958 4.459-9.958 9.959 4.459 9.958 9.958 9.958 9.959-4.458 9.959-9.958ZM52.02-41.59 41.95-54.18m-6.346 2.227v36.588m6.345 2.227L52.02-25.727M110.236-41.59l10.071-12.59m6.345 2.227v36.588m-6.345 2.227-10.07-12.589",[508,596],{"fill":510,"stroke":597,"d":598,"style":599},"var(--tk-accent)","M68.525-33.659h25.207","stroke-width:1.2",[503,601,602,609,615,621],{"fill":597,"stroke":510,"fontSize":557},[503,603,605],{"transform":604},"translate(115.132 24.762)",[508,606],{"d":607,"fill":597,"stroke":597,"className":608,"style":565},"M-54.293-13.742L-54.574-13.742L-54.574-18.461Q-54.574-18.676-54.636-18.771Q-54.699-18.867-54.816-18.888Q-54.933-18.910-55.179-18.910L-55.179-19.207L-53.957-19.293L-53.957-16.805Q-53.480-17.269-52.781-17.269Q-52.300-17.269-51.892-17.025Q-51.484-16.781-51.248-16.367Q-51.011-15.953-51.011-15.469Q-51.011-15.094-51.160-14.765Q-51.308-14.437-51.578-14.185Q-51.847-13.933-52.191-13.799Q-52.535-13.664-52.894-13.664Q-53.215-13.664-53.513-13.812Q-53.812-13.961-54.019-14.222L-54.293-13.742M-53.933-16.414L-53.933-14.574Q-53.781-14.277-53.521-14.097Q-53.261-13.918-52.949-13.918Q-52.523-13.918-52.256-14.137Q-51.988-14.355-51.873-14.701Q-51.758-15.047-51.758-15.469Q-51.758-16.117-52.006-16.566Q-52.254-17.015-52.851-17.015Q-53.187-17.015-53.476-16.857Q-53.765-16.699-53.933-16.414M-48.480-13.742L-50.461-13.742L-50.461-14.039Q-50.191-14.039-50.023-14.084Q-49.855-14.129-49.855-14.301L-49.855-16.437Q-49.855-16.652-49.918-16.748Q-49.980-16.844-50.097-16.865Q-50.215-16.887-50.461-16.887L-50.461-17.183L-49.293-17.269L-49.293-16.484Q-49.215-16.695-49.062-16.881Q-48.910-17.066-48.711-17.168Q-48.511-17.269-48.285-17.269Q-48.039-17.269-47.847-17.125Q-47.656-16.980-47.656-16.750Q-47.656-16.594-47.761-16.484Q-47.867-16.375-48.023-16.375Q-48.179-16.375-48.289-16.484Q-48.398-16.594-48.398-16.750Q-48.398-16.910-48.293-17.015Q-48.617-17.015-48.832-16.787Q-49.047-16.558-49.142-16.219Q-49.238-15.879-49.238-15.574L-49.238-14.301Q-49.238-14.133-49.011-14.086Q-48.785-14.039-48.480-14.039L-48.480-13.742M-45.316-13.742L-47.093-13.742L-47.093-14.039Q-46.820-14.039-46.652-14.086Q-46.484-14.133-46.484-14.301L-46.484-16.437Q-46.484-16.652-46.541-16.748Q-46.597-16.844-46.711-16.865Q-46.824-16.887-47.070-16.887L-47.070-17.183L-45.871-17.269L-45.871-14.301Q-45.871-14.133-45.724-14.086Q-45.578-14.039-45.316-14.039L-45.316-13.742M-46.758-18.664Q-46.758-18.855-46.623-18.986Q-46.488-19.117-46.293-19.117Q-46.172-19.117-46.068-19.055Q-45.965-18.992-45.902-18.888Q-45.840-18.785-45.840-18.664Q-45.840-18.469-45.970-18.334Q-46.101-18.199-46.293-18.199Q-46.492-18.199-46.625-18.332Q-46.758-18.465-46.758-18.664M-43-13.664Q-43.480-13.664-43.888-13.908Q-44.297-14.152-44.535-14.566Q-44.773-14.980-44.773-15.469Q-44.773-15.961-44.515-16.377Q-44.258-16.793-43.826-17.031Q-43.394-17.269-42.902-17.269Q-42.281-17.269-41.832-16.832L-41.832-18.461Q-41.832-18.676-41.894-18.771Q-41.957-18.867-42.074-18.888Q-42.191-18.910-42.437-18.910L-42.437-19.207L-41.215-19.293L-41.215-14.484Q-41.215-14.273-41.152-14.178Q-41.090-14.082-40.972-14.060Q-40.855-14.039-40.605-14.039L-40.605-13.742L-41.855-13.664L-41.855-14.148Q-42.320-13.664-43-13.664M-42.933-13.918Q-42.593-13.918-42.300-14.109Q-42.008-14.301-41.855-14.597L-41.855-16.430Q-42.004-16.703-42.265-16.859Q-42.527-17.015-42.840-17.015Q-43.465-17.015-43.748-16.568Q-44.031-16.121-44.031-15.461Q-44.031-14.816-43.779-14.367Q-43.527-13.918-42.933-13.918M-40.097-13.133Q-40.097-13.414-39.886-13.625Q-39.675-13.836-39.390-13.926Q-39.547-14.051-39.625-14.240Q-39.703-14.430-39.703-14.629Q-39.703-14.984-39.472-15.277Q-39.840-15.617-39.840-16.086Q-39.840-16.437-39.636-16.707Q-39.433-16.976-39.113-17.123Q-38.793-17.269-38.449-17.269Q-37.929-17.269-37.558-16.988Q-37.195-17.359-36.648-17.359Q-36.468-17.359-36.341-17.232Q-36.215-17.105-36.215-16.926Q-36.215-16.820-36.293-16.742Q-36.371-16.664-36.480-16.664Q-36.590-16.664-36.666-16.740Q-36.742-16.816-36.742-16.926Q-36.742-17.027-36.703-17.078Q-36.695-17.086-36.691-17.092Q-36.687-17.097-36.687-17.101Q-37.062-17.101-37.383-16.847Q-37.062-16.508-37.062-16.086Q-37.062-15.816-37.179-15.599Q-37.297-15.383-37.502-15.224Q-37.707-15.066-37.949-14.984Q-38.191-14.902-38.449-14.902Q-38.668-14.902-38.881-14.961Q-39.093-15.019-39.289-15.140Q-39.383-15-39.383-14.820Q-39.383-14.613-39.246-14.461Q-39.109-14.308-38.902-14.308L-38.207-14.308Q-37.718-14.308-37.306-14.224Q-36.894-14.140-36.615-13.883Q-36.336-13.625-36.336-13.133Q-36.336-12.769-36.656-12.537Q-36.976-12.305-37.418-12.203Q-37.859-12.101-38.215-12.101Q-38.570-12.101-39.013-12.203Q-39.457-12.305-39.777-12.537Q-40.097-12.769-40.097-13.133M-39.593-13.133Q-39.593-12.937-39.449-12.789Q-39.304-12.640-39.091-12.551Q-38.879-12.461-38.638-12.414Q-38.398-12.367-38.215-12.367Q-37.972-12.367-37.642-12.445Q-37.312-12.523-37.076-12.697Q-36.840-12.871-36.840-13.133Q-36.840-13.539-37.250-13.648Q-37.660-13.758-38.222-13.758L-38.902-13.758Q-39.172-13.758-39.383-13.580Q-39.593-13.402-39.593-13.133M-38.449-15.168Q-37.726-15.168-37.726-16.086Q-37.726-17.008-38.449-17.008Q-39.175-17.008-39.175-16.086Q-39.175-15.168-38.449-15.168M-35.851-15.496Q-35.851-15.976-35.619-16.392Q-35.386-16.808-34.976-17.058Q-34.566-17.308-34.090-17.308Q-33.359-17.308-32.961-16.867Q-32.562-16.426-32.562-15.695Q-32.562-15.590-32.656-15.566L-35.105-15.566L-35.105-15.496Q-35.105-15.086-34.984-14.730Q-34.863-14.375-34.591-14.158Q-34.320-13.941-33.890-13.941Q-33.527-13.941-33.230-14.170Q-32.933-14.398-32.832-14.750Q-32.824-14.797-32.738-14.812L-32.656-14.812Q-32.562-14.785-32.562-14.703Q-32.562-14.695-32.570-14.664Q-32.633-14.437-32.771-14.254Q-32.910-14.070-33.101-13.937Q-33.293-13.805-33.511-13.734Q-33.730-13.664-33.968-13.664Q-34.340-13.664-34.677-13.801Q-35.015-13.937-35.283-14.189Q-35.550-14.441-35.701-14.781Q-35.851-15.121-35.851-15.496M-35.097-15.805L-33.136-15.805Q-33.136-16.109-33.238-16.400Q-33.340-16.691-33.556-16.873Q-33.773-17.055-34.090-17.055Q-34.390-17.055-34.621-16.867Q-34.851-16.680-34.974-16.388Q-35.097-16.097-35.097-15.805",[519],[503,610,611],{"transform":604},[508,612],{"d":613,"fill":597,"stroke":597,"className":614,"style":565},"M-28.535-14.664Q-28.535-14.914-28.461-15.201Q-28.387-15.488-28.250-15.840Q-28.113-16.191-28.051-16.359Q-27.961-16.582-27.961-16.765Q-27.961-17.015-28.129-17.015Q-28.445-17.015-28.654-16.709Q-28.863-16.402-28.969-16.015Q-28.981-15.941-29.051-15.941L-29.152-15.941Q-29.188-15.941-29.215-15.976Q-29.242-16.012-29.242-16.039L-29.242-16.070Q-29.117-16.531-28.820-16.900Q-28.524-17.269-28.113-17.269Q-27.918-17.269-27.744-17.185Q-27.570-17.101-27.469-16.949Q-27.367-16.797-27.367-16.590Q-27.367-16.437-27.426-16.301Q-27.516-16.070-27.617-15.805Q-27.719-15.539-27.776-15.357Q-27.832-15.176-27.877-14.961Q-27.922-14.746-27.922-14.551Q-27.922-14.277-27.799-14.097Q-27.676-13.918-27.418-13.918Q-27.149-13.918-26.840-14.146Q-26.531-14.375-26.481-14.629L-25.914-16.902Q-25.875-17.027-25.772-17.109Q-25.668-17.191-25.543-17.191Q-25.434-17.191-25.354-17.117Q-25.274-17.043-25.274-16.933Q-25.274-16.910-25.289-16.847L-25.856-14.574Q-25.860-14.535-25.873-14.474Q-25.887-14.414-25.893-14.363Q-25.899-14.312-25.899-14.277Q-25.899-13.918-25.649-13.918Q-25.508-13.918-25.406-14.025Q-25.305-14.133-25.240-14.287Q-25.176-14.441-25.127-14.631Q-25.078-14.820-25.059-14.918Q-25.024-14.988-24.969-14.988L-24.863-14.988Q-24.824-14.988-24.801-14.959Q-24.777-14.930-24.777-14.894Q-24.777-14.879-24.785-14.863Q-24.856-14.566-24.953-14.308Q-25.051-14.051-25.227-13.857Q-25.402-13.664-25.664-13.664Q-25.930-13.664-26.152-13.797Q-26.375-13.930-26.465-14.168Q-26.652-13.941-26.908-13.803Q-27.164-13.664-27.434-13.664Q-27.758-13.664-28.008-13.773Q-28.258-13.883-28.397-14.107Q-28.535-14.332-28.535-14.664",[519],[503,616,617],{"transform":604},[508,618],{"d":619,"fill":597,"stroke":597,"className":620,"style":565},"M-18.353-15.558L-23.185-15.558Q-23.259-15.570-23.310-15.619Q-23.361-15.668-23.361-15.742Q-23.361-15.894-23.185-15.926L-18.353-15.926Q-18.185-15.898-18.185-15.742Q-18.185-15.586-18.353-15.558",[519],[503,622,623],{"transform":604},[508,624],{"d":625,"fill":597,"stroke":597,"className":626,"style":565},"M-16.050-14.695Q-16.050-14.867-16.008-15.078Q-15.965-15.289-15.904-15.476Q-15.843-15.664-15.746-15.916Q-15.648-16.168-15.574-16.359Q-15.484-16.582-15.484-16.765Q-15.484-17.015-15.652-17.015Q-15.968-17.015-16.177-16.709Q-16.386-16.402-16.492-16.015Q-16.504-15.941-16.574-15.941L-16.675-15.941Q-16.711-15.941-16.738-15.976Q-16.765-16.012-16.765-16.039L-16.765-16.070Q-16.640-16.531-16.343-16.900Q-16.047-17.269-15.636-17.269Q-15.441-17.269-15.267-17.185Q-15.093-17.101-14.992-16.949Q-14.890-16.797-14.890-16.590Q-14.890-16.437-14.949-16.301Q-15.043-16.058-15.168-15.730Q-15.293-15.402-15.365-15.123Q-15.437-14.844-15.437-14.590Q-15.437-14.281-15.283-14.099Q-15.129-13.918-14.828-13.918Q-14.433-13.918-14.050-14.390Q-13.922-14.558-13.775-14.859Q-13.629-15.160-13.533-15.459Q-13.437-15.758-13.437-15.965Q-13.437-16.191-13.511-16.310Q-13.586-16.430-13.722-16.584Q-13.859-16.738-13.859-16.840Q-13.859-17.012-13.718-17.144Q-13.578-17.277-13.422-17.277Q-13.207-17.277-13.113-17.086Q-13.019-16.894-13.019-16.664Q-13.019-16.160-13.248-15.439Q-13.476-14.719-13.896-14.191Q-14.316-13.664-14.843-13.664Q-15.097-13.664-15.318-13.722Q-15.539-13.781-15.701-13.906Q-15.863-14.031-15.957-14.232Q-16.050-14.433-16.050-14.695",[519],[628,629,632,633,682],"figcaption",{"className":630},[631],"tikz-cap","2-edge-connected (left, every edge on a cycle) vs a graph with a bridge (right, ",[410,634,636],{"className":635},[413],[410,637,639,670],{"className":638,"ariaHidden":418},[417],[410,640,642,646,650,655,659,664,667],{"className":641},[422],[410,643],{"className":644,"style":645},[426],"height:0.6667em;vertical-align:-0.0833em;",[410,647,649],{"className":648},[431,432],"u",[410,651],{"className":652,"style":654},[653],"mspace","margin-right:-0.1667em;",[410,656],{"className":657,"style":658},[653],"margin-right:0.2222em;",[410,660,663],{"className":661},[662],"mbin","−",[410,665],{"className":666,"style":654},[653],[410,668],{"className":669,"style":658},[653],[410,671,673,677],{"className":672},[422],[410,674],{"className":675,"style":676},[426],"height:0.4306em;",[410,678,681],{"className":679,"style":680},[431,432],"margin-right:0.0359em;","v"," cut)",[684,685,687],"h2",{"id":686},"the-dfs-tree-view","The DFS-tree view",[381,689,690,691,694],{},"Run DFS from any vertex of a ",[394,692,693],{},"connected, undirected"," graph. Classify each edge by\nwhen DFS first traverses it. The decisive structural fact is that only two kinds\nsurvive.",[399,696,698],{"type":697},"lemma",[381,699,700,703,704,707,708,711],{},[405,701,702],{},"Lemma (no cross edges)."," A depth-first search of an undirected graph produces\nonly ",[405,705,706],{},"tree edges"," and ",[405,709,710],{},"back edges",". There are no forward or cross edges.",[399,713,715],{"type":714},"proof",[381,716,717,720,721,759,760,775,776,791,792,822,823,859,860,875,876,891,892,907,908,923,924,954,955,970,971,986,987,1002,1003,1033,1034],{},[405,718,719],{},"Proof sketch."," Consider any edge ",[410,722,724],{"className":723},[413],[410,725,727],{"className":726,"ariaHidden":418},[417],[410,728,730,734,739,742,747,751,754],{"className":729},[422],[410,731],{"className":732,"style":733},[426],"height:1em;vertical-align:-0.25em;",[410,735,738],{"className":736},[737],"mopen","{",[410,740,649],{"className":741},[431,432],[410,743,746],{"className":744},[745],"mpunct",",",[410,748],{"className":749,"style":750},[653],"margin-right:0.1667em;",[410,752,681],{"className":753,"style":680},[431,432],[410,755,758],{"className":756},[757],"mclose","}",", and say DFS visits ",[410,761,763],{"className":762},[413],[410,764,766],{"className":765,"ariaHidden":418},[417],[410,767,769,772],{"className":768},[422],[410,770],{"className":771,"style":676},[426],[410,773,649],{"className":774},[431,432]," first. While\n",[410,777,779],{"className":778},[413],[410,780,782],{"className":781,"ariaHidden":418},[417],[410,783,785,788],{"className":784},[422],[410,786],{"className":787,"style":676},[426],[410,789,649],{"className":790},[431,432]," is on the recursion stack (gray), the edge ",[410,793,795],{"className":794},[413],[410,796,798],{"className":797,"ariaHidden":418},[417],[410,799,801,804,807,810,813,816,819],{"className":800},[422],[410,802],{"className":803,"style":733},[426],[410,805,738],{"className":806},[737],[410,808,649],{"className":809},[431,432],[410,811,746],{"className":812},[745],[410,814],{"className":815,"style":750},[653],[410,817,681],{"className":818,"style":680},[431,432],[410,820,758],{"className":821},[757]," has not yet been used in\nthe direction ",[410,824,826],{"className":825},[413],[410,827,829,850],{"className":828,"ariaHidden":418},[417],[410,830,832,835,838,842,847],{"className":831},[422],[410,833],{"className":834,"style":676},[426],[410,836,649],{"className":837},[431,432],[410,839],{"className":840,"style":841},[653],"margin-right:0.2778em;",[410,843,846],{"className":844},[845],"mrel","→",[410,848],{"className":849,"style":841},[653],[410,851,853,856],{"className":852},[422],[410,854],{"className":855,"style":676},[426],[410,857,681],{"className":858,"style":680},[431,432],", so ",[410,861,863],{"className":862},[413],[410,864,866],{"className":865,"ariaHidden":418},[417],[410,867,869,872],{"className":868},[422],[410,870],{"className":871,"style":676},[426],[410,873,681],{"className":874,"style":680},[431,432]," is reachable from ",[410,877,879],{"className":878},[413],[410,880,882],{"className":881,"ariaHidden":418},[417],[410,883,885,888],{"className":884},[422],[410,886],{"className":887,"style":676},[426],[410,889,649],{"className":890},[431,432]," through this edge and will\nbecome a descendant of ",[410,893,895],{"className":894},[413],[410,896,898],{"className":897,"ariaHidden":418},[417],[410,899,901,904],{"className":900},[422],[410,902],{"className":903,"style":676},[426],[410,905,649],{"className":906},[431,432]," in the DFS tree before ",[410,909,911],{"className":910},[413],[410,912,914],{"className":913,"ariaHidden":418},[417],[410,915,917,920],{"className":916},[422],[410,918],{"className":919,"style":676},[426],[410,921,649],{"className":922},[431,432]," finishes. Thus when we do\ntraverse ",[410,925,927],{"className":926},[413],[410,928,930],{"className":929,"ariaHidden":418},[417],[410,931,933,936,939,942,945,948,951],{"className":932},[422],[410,934],{"className":935,"style":733},[426],[410,937,738],{"className":938},[737],[410,940,649],{"className":941},[431,432],[410,943,746],{"className":944},[745],[410,946],{"className":947,"style":750},[653],[410,949,681],{"className":950,"style":680},[431,432],[410,952,758],{"className":953},[757]," it connects an ancestor and a descendant: it is either a tree\nedge (if ",[410,956,958],{"className":957},[413],[410,959,961],{"className":960,"ariaHidden":418},[417],[410,962,964,967],{"className":963},[422],[410,965],{"className":966,"style":676},[426],[410,968,681],{"className":969,"style":680},[431,432]," was undiscovered) or a back edge (if ",[410,972,974],{"className":973},[413],[410,975,977],{"className":976,"ariaHidden":418},[417],[410,978,980,983],{"className":979},[422],[410,981],{"className":982,"style":676},[426],[410,984,681],{"className":985,"style":680},[431,432]," is an ancestor still on the\nstack). A cross or forward edge would require ",[410,988,990],{"className":989},[413],[410,991,993],{"className":992,"ariaHidden":418},[417],[410,994,996,999],{"className":995},[422],[410,997],{"className":998,"style":676},[426],[410,1000,681],{"className":1001,"style":680},[431,432]," to be a non-ancestor relative\nalready finished — impossible, since that relative would itself have explored\n",[410,1004,1006],{"className":1005},[413],[410,1007,1009],{"className":1008,"ariaHidden":418},[417],[410,1010,1012,1015,1018,1021,1024,1027,1030],{"className":1011},[422],[410,1013],{"className":1014,"style":733},[426],[410,1016,738],{"className":1017},[737],[410,1019,649],{"className":1020},[431,432],[410,1022,746],{"className":1023},[745],[410,1025],{"className":1026,"style":750},[653],[410,1028,681],{"className":1029,"style":680},[431,432],[410,1031,758],{"className":1032},[757]," first. ",[410,1035,1037],{"className":1036},[413],[410,1038,1040],{"className":1039,"ariaHidden":418},[417],[410,1041,1043,1047],{"className":1042},[422],[410,1044],{"className":1045,"style":1046},[426],"height:0.675em;",[410,1048,1052],{"className":1049},[1050,1051],"enclosing","qed",[410,1053,1056],{"className":1054},[431,1055],"amsrm","□",[381,1058,1059,1060,1063,1064,1067],{},"This is what makes undirected connectivity tractable: the only way to leave a DFS\nsubtree is a ",[405,1061,1062],{},"back edge"," climbing to an ancestor. Bridges and cut vertices are\nboth about ",[394,1065,1066],{},"whether"," such an escape exists. To detect it we time the search and\ntrack how high each subtree can climb.",[490,1069,1071,1167],{"className":1070},[493,494],[496,1072,1076],{"xmlns":498,"width":1073,"height":1074,"viewBox":1075},"272.970","126.138","-75 -75 204.728 94.603",[503,1077,1078,1081,1088,1091,1098,1101,1108,1111,1118,1121,1125,1140,1143,1164],{"stroke":505,"style":506},[508,1079],{"fill":510,"d":1080},"M45.337-62.112c0-5.5-4.458-9.958-9.958-9.958s-9.959 4.458-9.959 9.958 4.459 9.959 9.959 9.959 9.958-4.459 9.958-9.959Zm-9.958 0",[503,1082,1084],{"transform":1083},"translate(-2.45 1.937)",[508,1085],{"d":1086,"fill":505,"stroke":505,"className":1087,"style":520},"M37.001-62.011Q36.605-62.011 36.319-62.215Q36.034-62.420 35.887-62.754Q35.739-63.088 35.739-63.479Q35.739-63.914 35.913-64.375Q36.087-64.837 36.399-65.228Q36.711-65.619 37.121-65.854Q37.532-66.089 37.972-66.089Q38.240-66.089 38.457-65.951Q38.675-65.812 38.807-65.566Q38.846-65.716 38.954-65.812Q39.062-65.909 39.202-65.909Q39.325-65.909 39.409-65.836Q39.492-65.764 39.492-65.641Q39.492-65.588 39.483-65.557L38.864-63.066Q38.807-62.868 38.807-62.670Q38.807-62.275 39.070-62.275Q39.356-62.275 39.490-62.598Q39.624-62.921 39.743-63.426Q39.752-63.457 39.776-63.481Q39.800-63.505 39.835-63.505L39.941-63.505Q39.989-63.505 40.011-63.472Q40.033-63.439 40.033-63.391Q39.919-62.960 39.828-62.707Q39.738-62.455 39.545-62.233Q39.352-62.011 39.053-62.011Q38.745-62.011 38.497-62.182Q38.249-62.354 38.178-62.644Q37.923-62.358 37.627-62.185Q37.330-62.011 37.001-62.011M37.018-62.275Q37.348-62.275 37.658-62.516Q37.967-62.758 38.178-63.074Q38.187-63.083 38.187-63.101L38.684-65.065Q38.627-65.382 38.435-65.606Q38.244-65.830 37.954-65.830Q37.585-65.830 37.286-65.511Q36.987-65.193 36.820-64.784Q36.684-64.437 36.559-63.927Q36.434-63.417 36.434-63.092Q36.434-62.767 36.572-62.521Q36.711-62.275 37.018-62.275",[519],[508,1089],{"fill":510,"d":1090},"M45.337-27.968c0-5.5-4.458-9.959-9.958-9.959s-9.959 4.459-9.959 9.959 4.459 9.958 9.959 9.958 9.958-4.458 9.958-9.958Zm-9.958 0",[503,1092,1094],{"transform":1093},"translate(-1.982 37.268)",[508,1095],{"d":1096,"fill":505,"stroke":505,"className":1097,"style":520},"M37.001-62.011Q36.425-62.011 36.104-62.442Q35.783-62.872 35.783-63.452Q35.783-63.857 35.867-64.085L36.746-67.583Q36.781-67.733 36.781-67.807Q36.781-67.944 36.214-67.944Q36.117-67.944 36.117-68.062Q36.117-68.119 36.148-68.190Q36.179-68.260 36.245-68.260L37.466-68.357Q37.519-68.357 37.552-68.328Q37.585-68.299 37.585-68.251L37.585-68.216L36.926-65.606Q37.449-66.089 37.972-66.089Q38.358-66.089 38.649-65.885Q38.939-65.680 39.086-65.346Q39.233-65.012 39.233-64.621Q39.233-64.037 38.930-63.428Q38.627-62.820 38.106-62.415Q37.585-62.011 37.001-62.011M37.018-62.275Q37.387-62.275 37.691-62.598Q37.994-62.921 38.152-63.316Q38.297-63.672 38.418-64.180Q38.539-64.687 38.539-65.008Q38.539-65.333 38.394-65.581Q38.249-65.830 37.954-65.830Q37.352-65.830 36.781-65.030L36.539-64.037Q36.394-63.413 36.394-63.149Q36.394-62.806 36.546-62.540Q36.697-62.275 37.018-62.275",[519],[508,1099],{"fill":510,"d":1100},"M35.379-51.953v13.826M19.73 6.175c0-5.5-4.459-9.958-9.959-9.958S-.187.675-.187 6.175s4.458 9.958 9.958 9.958 9.959-4.458 9.959-9.958Zm-9.959 0",[503,1102,1104],{"transform":1103},"translate(-27.61 70.224)",[508,1105],{"d":1106,"fill":505,"stroke":505,"className":1107,"style":520},"M36.469-63.219Q36.469-62.824 36.682-62.549Q36.895-62.275 37.277-62.275Q37.822-62.275 38.328-62.510Q38.833-62.745 39.150-63.167Q39.171-63.202 39.233-63.202Q39.290-63.202 39.336-63.151Q39.382-63.101 39.382-63.048Q39.382-63.013 39.356-62.987Q39.009-62.512 38.446-62.261Q37.884-62.011 37.260-62.011Q36.829-62.011 36.480-62.213Q36.130-62.415 35.939-62.771Q35.748-63.127 35.748-63.553Q35.748-64.015 35.950-64.472Q36.152-64.929 36.508-65.298Q36.864-65.667 37.308-65.878Q37.752-66.089 38.222-66.089Q38.490-66.089 38.739-66.008Q38.987-65.926 39.154-65.748Q39.321-65.570 39.321-65.307Q39.321-65.070 39.171-64.892Q39.022-64.714 38.789-64.714Q38.649-64.714 38.543-64.808Q38.438-64.903 38.438-65.048Q38.438-65.250 38.585-65.404Q38.732-65.557 38.934-65.557Q38.829-65.698 38.624-65.764Q38.420-65.830 38.213-65.830Q37.677-65.830 37.280-65.401Q36.882-64.973 36.675-64.353Q36.469-63.734 36.469-63.219",[519],[508,1109],{"fill":510,"d":1110},"M29.284-19.842 15.866-1.952M70.945 6.175c0-5.5-4.459-9.958-9.959-9.958S51.028.675 51.028 6.175s4.458 9.958 9.958 9.958 9.959-4.458 9.959-9.958Zm-9.959 0",[503,1112,1114],{"transform":1113},"translate(23.211 71.412)",[508,1115],{"d":1116,"fill":505,"stroke":505,"className":1117,"style":520},"M37.001-62.011Q36.605-62.011 36.319-62.215Q36.034-62.420 35.887-62.754Q35.739-63.088 35.739-63.479Q35.739-63.914 35.913-64.375Q36.087-64.837 36.399-65.228Q36.711-65.619 37.121-65.854Q37.532-66.089 37.972-66.089Q38.240-66.089 38.457-65.951Q38.675-65.812 38.807-65.566L39.312-67.583Q39.347-67.733 39.347-67.807Q39.347-67.944 38.780-67.944Q38.684-67.944 38.684-68.062Q38.684-68.119 38.714-68.190Q38.745-68.260 38.807-68.260L40.033-68.357Q40.086-68.357 40.116-68.328Q40.147-68.299 40.147-68.251L40.147-68.216L38.864-63.066Q38.864-63.008 38.835-62.877Q38.807-62.745 38.807-62.670Q38.807-62.275 39.070-62.275Q39.356-62.275 39.490-62.598Q39.624-62.921 39.743-63.426Q39.752-63.457 39.776-63.481Q39.800-63.505 39.835-63.505L39.941-63.505Q39.989-63.505 40.011-63.472Q40.033-63.439 40.033-63.391Q39.919-62.960 39.828-62.707Q39.738-62.455 39.545-62.233Q39.352-62.011 39.053-62.011Q38.745-62.011 38.497-62.182Q38.249-62.354 38.178-62.644Q37.923-62.358 37.627-62.185Q37.330-62.011 37.001-62.011M37.018-62.275Q37.348-62.275 37.658-62.516Q37.967-62.758 38.178-63.074Q38.187-63.083 38.187-63.110L38.684-65.065Q38.627-65.382 38.435-65.606Q38.244-65.830 37.954-65.830Q37.585-65.830 37.286-65.511Q36.987-65.193 36.820-64.784Q36.684-64.437 36.559-63.927Q36.434-63.417 36.434-63.092Q36.434-62.767 36.572-62.521Q36.711-62.275 37.018-62.275",[519],[508,1119],{"fill":510,"d":1120},"M41.474-19.842 54.89-1.952",[508,1122],{"fill":510,"stroke":597,"d":1123,"style":1124},"M4.026-2.202C-9.525-21.96 2.34-53.602 25.542-59.578","stroke-dasharray:3.0,3.0;stroke-width:.8",[503,1126,1127,1134],{"stroke":510,"fontFamily":556,"fontSize":557},[503,1128,1130],{"transform":1129},"translate(57.21 47.525)",[508,1131],{"d":1132,"fill":505,"stroke":505,"className":1133,"style":565},"M36.242-63.073L36.242-65.264L35.539-65.264L35.539-65.518Q35.895-65.518 36.137-65.751Q36.379-65.983 36.490-66.331Q36.602-66.678 36.602-67.034L36.883-67.034L36.883-65.561L38.059-65.561L38.059-65.264L36.883-65.264L36.883-63.089Q36.883-62.768 37.002-62.540Q37.121-62.311 37.402-62.311Q37.582-62.311 37.699-62.434Q37.816-62.557 37.869-62.737Q37.922-62.917 37.922-63.089L37.922-63.561L38.203-63.561L38.203-63.073Q38.203-62.819 38.098-62.579Q37.992-62.339 37.795-62.186Q37.598-62.034 37.340-62.034Q37.024-62.034 36.772-62.157Q36.520-62.280 36.381-62.514Q36.242-62.749 36.242-63.073M40.930-62.112L38.949-62.112L38.949-62.409Q39.219-62.409 39.387-62.454Q39.555-62.499 39.555-62.671L39.555-64.807Q39.555-65.022 39.492-65.118Q39.430-65.214 39.313-65.235Q39.195-65.257 38.949-65.257L38.949-65.553L40.117-65.639L40.117-64.854Q40.195-65.065 40.348-65.251Q40.500-65.436 40.699-65.538Q40.899-65.639 41.125-65.639Q41.371-65.639 41.563-65.495Q41.754-65.350 41.754-65.120Q41.754-64.964 41.649-64.854Q41.543-64.745 41.387-64.745Q41.231-64.745 41.121-64.854Q41.012-64.964 41.012-65.120Q41.012-65.280 41.117-65.385Q40.793-65.385 40.578-65.157Q40.363-64.928 40.268-64.589Q40.172-64.249 40.172-63.944L40.172-62.671Q40.172-62.503 40.399-62.456Q40.625-62.409 40.930-62.409L40.930-62.112M42.234-63.866Q42.234-64.346 42.467-64.762Q42.699-65.178 43.109-65.428Q43.520-65.678 43.996-65.678Q44.727-65.678 45.125-65.237Q45.524-64.796 45.524-64.065Q45.524-63.960 45.430-63.936L42.981-63.936L42.981-63.866Q42.981-63.456 43.102-63.100Q43.223-62.745 43.494-62.528Q43.766-62.311 44.195-62.311Q44.559-62.311 44.856-62.540Q45.152-62.768 45.254-63.120Q45.262-63.167 45.348-63.182L45.430-63.182Q45.524-63.155 45.524-63.073Q45.524-63.065 45.516-63.034Q45.453-62.807 45.315-62.624Q45.176-62.440 44.984-62.307Q44.793-62.175 44.574-62.104Q44.356-62.034 44.117-62.034Q43.746-62.034 43.408-62.171Q43.070-62.307 42.803-62.559Q42.535-62.811 42.385-63.151Q42.234-63.491 42.234-63.866M42.988-64.174L44.949-64.174Q44.949-64.479 44.848-64.770Q44.746-65.061 44.529-65.243Q44.313-65.424 43.996-65.424Q43.695-65.424 43.465-65.237Q43.234-65.049 43.111-64.758Q42.988-64.467 42.988-64.174M46.012-63.866Q46.012-64.346 46.244-64.762Q46.477-65.178 46.887-65.428Q47.297-65.678 47.774-65.678Q48.504-65.678 48.902-65.237Q49.301-64.796 49.301-64.065Q49.301-63.960 49.207-63.936L46.758-63.936L46.758-63.866Q46.758-63.456 46.879-63.100Q47-62.745 47.272-62.528Q47.543-62.311 47.973-62.311Q48.336-62.311 48.633-62.540Q48.930-62.768 49.031-63.120Q49.039-63.167 49.125-63.182L49.207-63.182Q49.301-63.155 49.301-63.073Q49.301-63.065 49.293-63.034Q49.231-62.807 49.092-62.624Q48.953-62.440 48.762-62.307Q48.570-62.175 48.352-62.104Q48.133-62.034 47.895-62.034Q47.524-62.034 47.186-62.171Q46.848-62.307 46.580-62.559Q46.313-62.811 46.162-63.151Q46.012-63.491 46.012-63.866M46.766-64.174L48.727-64.174Q48.727-64.479 48.625-64.770Q48.524-65.061 48.307-65.243Q48.090-65.424 47.774-65.424Q47.473-65.424 47.242-65.237Q47.012-65.049 46.889-64.758Q46.766-64.467 46.766-64.174",[519],[503,1135,1136],{"transform":1129},[508,1137],{"d":1138,"fill":505,"stroke":505,"className":1139,"style":565},"M52.624-63.866Q52.624-64.346 52.857-64.762Q53.089-65.178 53.499-65.428Q53.909-65.678 54.386-65.678Q55.116-65.678 55.515-65.237Q55.913-64.796 55.913-64.065Q55.913-63.960 55.820-63.936L53.370-63.936L53.370-63.866Q53.370-63.456 53.491-63.100Q53.613-62.745 53.884-62.528Q54.156-62.311 54.585-62.311Q54.949-62.311 55.245-62.540Q55.542-62.768 55.644-63.120Q55.652-63.167 55.738-63.182L55.820-63.182Q55.913-63.155 55.913-63.073Q55.913-63.065 55.906-63.034Q55.843-62.807 55.704-62.624Q55.566-62.440 55.374-62.307Q55.183-62.175 54.964-62.104Q54.745-62.034 54.507-62.034Q54.136-62.034 53.798-62.171Q53.460-62.307 53.193-62.559Q52.925-62.811 52.775-63.151Q52.624-63.491 52.624-63.866M53.378-64.174L55.339-64.174Q55.339-64.479 55.238-64.770Q55.136-65.061 54.919-65.243Q54.702-65.424 54.386-65.424Q54.085-65.424 53.855-65.237Q53.624-65.049 53.501-64.758Q53.378-64.467 53.378-64.174M58.218-62.034Q57.738-62.034 57.329-62.278Q56.921-62.522 56.683-62.936Q56.445-63.350 56.445-63.839Q56.445-64.331 56.702-64.747Q56.960-65.163 57.392-65.401Q57.824-65.639 58.316-65.639Q58.937-65.639 59.386-65.202L59.386-66.831Q59.386-67.046 59.324-67.141Q59.261-67.237 59.144-67.258Q59.027-67.280 58.781-67.280L58.781-67.577L60.003-67.663L60.003-62.854Q60.003-62.643 60.066-62.548Q60.128-62.452 60.245-62.430Q60.363-62.409 60.613-62.409L60.613-62.112L59.363-62.034L59.363-62.518Q58.898-62.034 58.218-62.034M58.284-62.288Q58.624-62.288 58.917-62.479Q59.210-62.671 59.363-62.967L59.363-64.799Q59.214-65.073 58.952-65.229Q58.691-65.385 58.378-65.385Q57.753-65.385 57.470-64.938Q57.187-64.491 57.187-63.831Q57.187-63.186 57.439-62.737Q57.691-62.288 58.284-62.288M61.120-61.503Q61.120-61.784 61.331-61.995Q61.542-62.206 61.827-62.296Q61.671-62.421 61.593-62.610Q61.515-62.800 61.515-62.999Q61.515-63.354 61.745-63.647Q61.378-63.987 61.378-64.456Q61.378-64.807 61.581-65.077Q61.784-65.346 62.105-65.493Q62.425-65.639 62.769-65.639Q63.288-65.639 63.659-65.358Q64.023-65.729 64.570-65.729Q64.749-65.729 64.876-65.602Q65.003-65.475 65.003-65.296Q65.003-65.190 64.925-65.112Q64.847-65.034 64.738-65.034Q64.628-65.034 64.552-65.110Q64.476-65.186 64.476-65.296Q64.476-65.397 64.515-65.448Q64.523-65.456 64.527-65.462Q64.531-65.467 64.531-65.471Q64.156-65.471 63.835-65.217Q64.156-64.878 64.156-64.456Q64.156-64.186 64.038-63.969Q63.921-63.753 63.716-63.594Q63.511-63.436 63.269-63.354Q63.027-63.272 62.769-63.272Q62.550-63.272 62.337-63.331Q62.124-63.389 61.929-63.510Q61.835-63.370 61.835-63.190Q61.835-62.983 61.972-62.831Q62.109-62.678 62.316-62.678L63.011-62.678Q63.499-62.678 63.911-62.594Q64.323-62.510 64.603-62.253Q64.882-61.995 64.882-61.503Q64.882-61.139 64.562-60.907Q64.241-60.675 63.800-60.573Q63.359-60.471 63.003-60.471Q62.648-60.471 62.204-60.573Q61.761-60.675 61.441-60.907Q61.120-61.139 61.120-61.503M61.624-61.503Q61.624-61.307 61.769-61.159Q61.913-61.010 62.126-60.921Q62.339-60.831 62.579-60.784Q62.820-60.737 63.003-60.737Q63.245-60.737 63.575-60.815Q63.906-60.893 64.142-61.067Q64.378-61.241 64.378-61.503Q64.378-61.909 63.968-62.018Q63.558-62.128 62.995-62.128L62.316-62.128Q62.046-62.128 61.835-61.950Q61.624-61.772 61.624-61.503M62.769-63.538Q63.491-63.538 63.491-64.456Q63.491-65.378 62.769-65.378Q62.042-65.378 62.042-64.456Q62.042-63.538 62.769-63.538M65.366-63.866Q65.366-64.346 65.599-64.762Q65.831-65.178 66.241-65.428Q66.652-65.678 67.128-65.678Q67.859-65.678 68.257-65.237Q68.656-64.796 68.656-64.065Q68.656-63.960 68.562-63.936L66.113-63.936L66.113-63.866Q66.113-63.456 66.234-63.100Q66.355-62.745 66.626-62.528Q66.898-62.311 67.327-62.311Q67.691-62.311 67.988-62.540Q68.284-62.768 68.386-63.120Q68.394-63.167 68.480-63.182L68.562-63.182Q68.656-63.155 68.656-63.073Q68.656-63.065 68.648-63.034Q68.585-62.807 68.447-62.624Q68.308-62.440 68.116-62.307Q67.925-62.175 67.706-62.104Q67.488-62.034 67.249-62.034Q66.878-62.034 66.540-62.171Q66.202-62.307 65.935-62.559Q65.667-62.811 65.517-63.151Q65.366-63.491 65.366-63.866M66.120-64.174L68.081-64.174Q68.081-64.479 67.980-64.770Q67.878-65.061 67.661-65.243Q67.445-65.424 67.128-65.424Q66.827-65.424 66.597-65.237Q66.366-65.049 66.243-64.758Q66.120-64.467 66.120-64.174",[519],[508,1141],{"fill":510,"d":1142},"M92.054-16.587 51.028-9.474",[503,1144,1145,1152,1158],{"fill":597,"stroke":510,"fontFamily":556,"fontSize":557},[503,1146,1148],{"transform":1147},"translate(-100.694 61.75)",[508,1149],{"d":1150,"fill":597,"stroke":597,"className":1151,"style":565},"M36.531-62.112L36.250-62.112L36.250-66.831Q36.250-67.046 36.188-67.141Q36.125-67.237 36.008-67.258Q35.891-67.280 35.645-67.280L35.645-67.577L36.867-67.663L36.867-65.174Q37.344-65.639 38.043-65.639Q38.524-65.639 38.932-65.395Q39.340-65.151 39.576-64.737Q39.813-64.323 39.813-63.839Q39.813-63.464 39.664-63.135Q39.516-62.807 39.246-62.555Q38.977-62.303 38.633-62.169Q38.289-62.034 37.930-62.034Q37.609-62.034 37.311-62.182Q37.012-62.331 36.805-62.592L36.531-62.112M36.891-64.784L36.891-62.944Q37.043-62.647 37.303-62.467Q37.563-62.288 37.875-62.288Q38.301-62.288 38.568-62.507Q38.836-62.725 38.951-63.071Q39.066-63.417 39.066-63.839Q39.066-64.487 38.818-64.936Q38.570-65.385 37.973-65.385Q37.637-65.385 37.348-65.227Q37.059-65.069 36.891-64.784M40.434-62.944Q40.434-63.428 40.836-63.723Q41.238-64.018 41.789-64.137Q42.340-64.257 42.832-64.257L42.832-64.546Q42.832-64.772 42.717-64.979Q42.602-65.186 42.404-65.305Q42.207-65.424 41.977-65.424Q41.551-65.424 41.266-65.319Q41.336-65.292 41.383-65.237Q41.430-65.182 41.455-65.112Q41.481-65.042 41.481-64.967Q41.481-64.862 41.430-64.770Q41.379-64.678 41.287-64.628Q41.195-64.577 41.090-64.577Q40.984-64.577 40.893-64.628Q40.801-64.678 40.750-64.770Q40.699-64.862 40.699-64.967Q40.699-65.385 41.088-65.532Q41.477-65.678 41.977-65.678Q42.309-65.678 42.662-65.548Q43.016-65.417 43.244-65.163Q43.473-64.909 43.473-64.561L43.473-62.760Q43.473-62.628 43.545-62.518Q43.617-62.409 43.746-62.409Q43.871-62.409 43.940-62.514Q44.008-62.620 44.008-62.760L44.008-63.272L44.289-63.272L44.289-62.760Q44.289-62.557 44.172-62.399Q44.055-62.241 43.873-62.157Q43.691-62.073 43.488-62.073Q43.258-62.073 43.106-62.245Q42.953-62.417 42.922-62.647Q42.762-62.366 42.453-62.200Q42.145-62.034 41.793-62.034Q41.281-62.034 40.858-62.257Q40.434-62.479 40.434-62.944M41.121-62.944Q41.121-62.659 41.348-62.473Q41.574-62.288 41.867-62.288Q42.113-62.288 42.338-62.405Q42.563-62.522 42.697-62.725Q42.832-62.928 42.832-63.182L42.832-64.014Q42.566-64.014 42.281-63.960Q41.996-63.905 41.725-63.776Q41.453-63.647 41.287-63.440Q41.121-63.233 41.121-62.944M44.625-63.839Q44.625-64.335 44.875-64.760Q45.125-65.186 45.545-65.432Q45.965-65.678 46.465-65.678Q47.004-65.678 47.395-65.553Q47.785-65.428 47.785-65.014Q47.785-64.909 47.734-64.817Q47.684-64.725 47.592-64.674Q47.500-64.624 47.391-64.624Q47.285-64.624 47.193-64.674Q47.102-64.725 47.051-64.817Q47-64.909 47-65.014Q47-65.237 47.168-65.342Q46.945-65.401 46.473-65.401Q46.176-65.401 45.961-65.262Q45.746-65.124 45.615-64.893Q45.484-64.663 45.426-64.393Q45.367-64.124 45.367-63.839Q45.367-63.444 45.500-63.094Q45.633-62.745 45.904-62.528Q46.176-62.311 46.574-62.311Q46.949-62.311 47.225-62.528Q47.500-62.745 47.602-63.104Q47.617-63.167 47.680-63.167L47.785-63.167Q47.820-63.167 47.846-63.139Q47.871-63.112 47.871-63.073L47.871-63.050Q47.738-62.569 47.354-62.301Q46.969-62.034 46.465-62.034Q46.102-62.034 45.768-62.171Q45.434-62.307 45.174-62.557Q44.914-62.807 44.770-63.143Q44.625-63.479 44.625-63.839",[519],[503,1153,1154],{"transform":1147},[508,1155],{"d":1156,"fill":597,"stroke":597,"className":1157,"style":565},"M49.956-62.112L48.159-62.112L48.159-62.409Q48.428-62.409 48.596-62.454Q48.764-62.499 48.764-62.671L48.764-66.831Q48.764-67.046 48.702-67.141Q48.639-67.237 48.522-67.258Q48.405-67.280 48.159-67.280L48.159-67.577L49.381-67.663L49.381-63.897L50.479-64.784Q50.686-64.964 50.686-65.112Q50.686-65.178 50.633-65.221Q50.581-65.264 50.510-65.264L50.510-65.561L52.045-65.561L52.045-65.264Q51.514-65.264 50.916-64.784L50.307-64.288L51.381-62.889Q51.518-62.714 51.625-62.606Q51.733-62.499 51.868-62.454Q52.002-62.409 52.229-62.409L52.229-62.112L50.604-62.112L50.604-62.409Q50.846-62.409 50.846-62.561Q50.846-62.639 50.803-62.710Q50.760-62.780 50.678-62.889L49.877-63.936L49.350-63.510L49.350-62.671Q49.350-62.503 49.518-62.456Q49.686-62.409 49.956-62.409",[519],[503,1159,1160],{"transform":1147},[508,1161],{"d":1162,"fill":597,"stroke":597,"className":1163,"style":565},"M55.450-63.866Q55.450-64.346 55.683-64.762Q55.915-65.178 56.325-65.428Q56.735-65.678 57.212-65.678Q57.942-65.678 58.341-65.237Q58.739-64.796 58.739-64.065Q58.739-63.960 58.646-63.936L56.196-63.936L56.196-63.866Q56.196-63.456 56.317-63.100Q56.439-62.745 56.710-62.528Q56.982-62.311 57.411-62.311Q57.775-62.311 58.071-62.540Q58.368-62.768 58.470-63.120Q58.478-63.167 58.564-63.182L58.646-63.182Q58.739-63.155 58.739-63.073Q58.739-63.065 58.732-63.034Q58.669-62.807 58.530-62.624Q58.392-62.440 58.200-62.307Q58.009-62.175 57.790-62.104Q57.571-62.034 57.333-62.034Q56.962-62.034 56.624-62.171Q56.286-62.307 56.019-62.559Q55.751-62.811 55.601-63.151Q55.450-63.491 55.450-63.866M56.204-64.174L58.165-64.174Q58.165-64.479 58.064-64.770Q57.962-65.061 57.745-65.243Q57.528-65.424 57.212-65.424Q56.911-65.424 56.681-65.237Q56.450-65.049 56.327-64.758Q56.204-64.467 56.204-64.174M61.044-62.034Q60.564-62.034 60.155-62.278Q59.747-62.522 59.509-62.936Q59.271-63.350 59.271-63.839Q59.271-64.331 59.528-64.747Q59.786-65.163 60.218-65.401Q60.650-65.639 61.142-65.639Q61.763-65.639 62.212-65.202L62.212-66.831Q62.212-67.046 62.150-67.141Q62.087-67.237 61.970-67.258Q61.853-67.280 61.607-67.280L61.607-67.577L62.829-67.663L62.829-62.854Q62.829-62.643 62.892-62.548Q62.954-62.452 63.071-62.430Q63.189-62.409 63.439-62.409L63.439-62.112L62.189-62.034L62.189-62.518Q61.724-62.034 61.044-62.034M61.110-62.288Q61.450-62.288 61.743-62.479Q62.036-62.671 62.189-62.967L62.189-64.799Q62.040-65.073 61.778-65.229Q61.517-65.385 61.204-65.385Q60.579-65.385 60.296-64.938Q60.013-64.491 60.013-63.831Q60.013-63.186 60.265-62.737Q60.517-62.288 61.110-62.288M63.946-61.503Q63.946-61.784 64.157-61.995Q64.368-62.206 64.653-62.296Q64.497-62.421 64.419-62.610Q64.341-62.800 64.341-62.999Q64.341-63.354 64.571-63.647Q64.204-63.987 64.204-64.456Q64.204-64.807 64.407-65.077Q64.610-65.346 64.931-65.493Q65.251-65.639 65.595-65.639Q66.114-65.639 66.485-65.358Q66.849-65.729 67.396-65.729Q67.575-65.729 67.702-65.602Q67.829-65.475 67.829-65.296Q67.829-65.190 67.751-65.112Q67.673-65.034 67.564-65.034Q67.454-65.034 67.378-65.110Q67.302-65.186 67.302-65.296Q67.302-65.397 67.341-65.448Q67.349-65.456 67.353-65.462Q67.357-65.467 67.357-65.471Q66.982-65.471 66.661-65.217Q66.982-64.878 66.982-64.456Q66.982-64.186 66.864-63.969Q66.747-63.753 66.542-63.594Q66.337-63.436 66.095-63.354Q65.853-63.272 65.595-63.272Q65.376-63.272 65.163-63.331Q64.950-63.389 64.755-63.510Q64.661-63.370 64.661-63.190Q64.661-62.983 64.798-62.831Q64.935-62.678 65.142-62.678L65.837-62.678Q66.325-62.678 66.737-62.594Q67.150-62.510 67.429-62.253Q67.708-61.995 67.708-61.503Q67.708-61.139 67.388-60.907Q67.067-60.675 66.626-60.573Q66.185-60.471 65.829-60.471Q65.474-60.471 65.030-60.573Q64.587-60.675 64.267-60.907Q63.946-61.139 63.946-61.503M64.450-61.503Q64.450-61.307 64.595-61.159Q64.739-61.010 64.952-60.921Q65.165-60.831 65.405-60.784Q65.646-60.737 65.829-60.737Q66.071-60.737 66.401-60.815Q66.732-60.893 66.968-61.067Q67.204-61.241 67.204-61.503Q67.204-61.909 66.794-62.018Q66.384-62.128 65.821-62.128L65.142-62.128Q64.872-62.128 64.661-61.950Q64.450-61.772 64.450-61.503M65.595-63.538Q66.317-63.538 66.317-64.456Q66.317-65.378 65.595-65.378Q64.868-65.378 64.868-64.456Q64.868-63.538 65.595-63.538M68.192-63.866Q68.192-64.346 68.425-64.762Q68.657-65.178 69.067-65.428Q69.478-65.678 69.954-65.678Q70.685-65.678 71.083-65.237Q71.482-64.796 71.482-64.065Q71.482-63.960 71.388-63.936L68.939-63.936L68.939-63.866Q68.939-63.456 69.060-63.100Q69.181-62.745 69.452-62.528Q69.724-62.311 70.153-62.311Q70.517-62.311 70.814-62.540Q71.110-62.768 71.212-63.120Q71.220-63.167 71.306-63.182L71.388-63.182Q71.482-63.155 71.482-63.073Q71.482-63.065 71.474-63.034Q71.411-62.807 71.273-62.624Q71.134-62.440 70.942-62.307Q70.751-62.175 70.532-62.104Q70.314-62.034 70.075-62.034Q69.704-62.034 69.366-62.171Q69.028-62.307 68.761-62.559Q68.493-62.811 68.343-63.151Q68.192-63.491 68.192-63.866M68.946-64.174L70.907-64.174Q70.907-64.479 70.806-64.770Q70.704-65.061 70.487-65.243Q70.271-65.424 69.954-65.424Q69.653-65.424 69.423-65.237Q69.192-65.049 69.069-64.758Q68.946-64.467 68.946-64.174",[519],[508,1165],{"fill":510,"stroke":597,"d":1166},"m-33.933-15.562 25.21-5.293",[628,1168,1170],{"className":1169},[631],"undirected DFS yields only tree edges (solid) and back edges (dashed) — no cross or forward edges",[399,1172,1173,1237],{"type":401},[381,1174,1175,1177,1178,1213,1214,1217,1218,1233,1234],{},[405,1176,407],{}," Let ",[410,1179,1181],{"className":1180},[413],[410,1182,1184],{"className":1183,"ariaHidden":418},[417],[410,1185,1187,1190,1194,1198,1202,1206,1209],{"className":1186},[422],[410,1188],{"className":1189,"style":733},[426],[410,1191,1193],{"className":1192},[431,432],"d",[410,1195,1197],{"className":1196},[431,432],"i",[410,1199,1201],{"className":1200},[431,432],"sc",[410,1203,1205],{"className":1204},[737],"[",[410,1207,649],{"className":1208},[431,432],[410,1210,1212],{"className":1211},[757],"]"," be the ",[405,1215,1216],{},"discovery time"," of ",[410,1219,1221],{"className":1220},[413],[410,1222,1224],{"className":1223,"ariaHidden":418},[417],[410,1225,1227,1230],{"className":1226},[422],[410,1228],{"className":1229,"style":676},[426],[410,1231,649],{"className":1232},[431,432]," (a counter\nincremented at each first visit). Define the ",[405,1235,1236],{},"low-link",[410,1238,1241],{"className":1239},[1240],"katex-display",[410,1242,1244],{"className":1243},[413],[410,1245,1247,1286,1343,1384,1419,1458],{"className":1246,"ariaHidden":418},[417],[410,1248,1250,1253,1258,1262,1267,1270,1273,1276,1279,1283],{"className":1249},[422],[410,1251],{"className":1252,"style":733},[426],[410,1254,1257],{"className":1255,"style":1256},[431,432],"margin-right:0.0197em;","l",[410,1259,1261],{"className":1260},[431,432],"o",[410,1263,1266],{"className":1264,"style":1265},[431,432],"margin-right:0.0269em;","w",[410,1268,1205],{"className":1269},[737],[410,1271,649],{"className":1272},[431,432],[410,1274,1212],{"className":1275},[757],[410,1277],{"className":1278,"style":841},[653],[410,1280,1282],{"className":1281},[845],"=",[410,1284],{"className":1285,"style":841},[653],[410,1287,1289,1293,1302,1311,1314,1317,1320,1323,1326,1329,1333,1336,1340],{"className":1288},[422],[410,1290],{"className":1291,"style":1292},[426],"height:1.8em;vertical-align:-0.65em;",[410,1294,1297],{"className":1295},[1296],"mop",[410,1298,1301],{"className":1299},[431,1300],"mathrm","min",[410,1303,1305],{"className":1304},[737],[410,1306,1310],{"className":1307},[1308,1309],"delimsizing","size2","(",[410,1312,738],{"className":1313},[737],[410,1315,1193],{"className":1316},[431,432],[410,1318,1197],{"className":1319},[431,432],[410,1321,1201],{"className":1322},[431,432],[410,1324,1205],{"className":1325},[737],[410,1327,649],{"className":1328},[431,432],[410,1330,1332],{"className":1331},[757],"]}",[410,1334],{"className":1335,"style":658},[653],[410,1337,1339],{"className":1338},[662],"∪",[410,1341],{"className":1342,"style":658},[653],[410,1344,1346,1349,1352,1355,1358,1361,1364,1367,1371,1374,1377,1381],{"className":1345},[422],[410,1347],{"className":1348,"style":733},[426],[410,1350,738],{"className":1351},[737],[410,1353],{"className":1354,"style":750},[653],[410,1356,1257],{"className":1357,"style":1256},[431,432],[410,1359,1261],{"className":1360},[431,432],[410,1362,1266],{"className":1363,"style":1265},[431,432],[410,1365,1205],{"className":1366},[737],[410,1368,1370],{"className":1369},[431,432],"c",[410,1372,1212],{"className":1373},[757],[410,1375],{"className":1376,"style":841},[653],[410,1378,1380],{"className":1379},[845],":",[410,1382],{"className":1383,"style":841},[653],[410,1385,1387,1390,1393,1401,1404,1407,1410,1413,1416],{"className":1386},[422],[410,1388],{"className":1389,"style":733},[426],[410,1391,1370],{"className":1392},[431,432],[410,1394,1397],{"className":1395},[431,1396],"text",[410,1398,1400],{"className":1399},[431]," a tree-child of ",[410,1402,649],{"className":1403},[431,432],[410,1405],{"className":1406,"style":750},[653],[410,1408,758],{"className":1409},[757],[410,1411],{"className":1412,"style":658},[653],[410,1414,1339],{"className":1415},[662],[410,1417],{"className":1418,"style":658},[653],[410,1420,1422,1425,1428,1431,1434,1437,1440,1443,1446,1449,1452,1455],{"className":1421},[422],[410,1423],{"className":1424,"style":733},[426],[410,1426,738],{"className":1427},[737],[410,1429],{"className":1430,"style":750},[653],[410,1432,1193],{"className":1433},[431,432],[410,1435,1197],{"className":1436},[431,432],[410,1438,1201],{"className":1439},[431,432],[410,1441,1205],{"className":1442},[737],[410,1444,1266],{"className":1445,"style":1265},[431,432],[410,1447,1212],{"className":1448},[757],[410,1450],{"className":1451,"style":841},[653],[410,1453,1380],{"className":1454},[845],[410,1456],{"className":1457,"style":841},[653],[410,1459,1461,1464,1467,1470,1473,1476,1479,1482,1489,1492,1495,1502],{"className":1460},[422],[410,1462],{"className":1463,"style":1292},[426],[410,1465,738],{"className":1466},[737],[410,1468,649],{"className":1469},[431,432],[410,1471,746],{"className":1472},[745],[410,1474],{"className":1475,"style":750},[653],[410,1477,1266],{"className":1478,"style":1265},[431,432],[410,1480,758],{"className":1481},[757],[410,1483,1485],{"className":1484},[431,1396],[410,1486,1488],{"className":1487},[431]," a back edge",[410,1490],{"className":1491,"style":750},[653],[410,1493,758],{"className":1494},[757],[410,1496,1498],{"className":1497},[757],[410,1499,1501],{"className":1500},[1308,1309],")",[410,1503,1505],{"className":1504},[431],".",[381,1507,1508,1509,1539,1540,1555,1556,1559,1560,1575,1576,1591,1592,1655,1656,1686,1687,1709,1710,1505],{},"In words, ",[410,1510,1512],{"className":1511},[413],[410,1513,1515],{"className":1514,"ariaHidden":418},[417],[410,1516,1518,1521,1524,1527,1530,1533,1536],{"className":1517},[422],[410,1519],{"className":1520,"style":733},[426],[410,1522,1257],{"className":1523,"style":1256},[431,432],[410,1525,1261],{"className":1526},[431,432],[410,1528,1266],{"className":1529,"style":1265},[431,432],[410,1531,1205],{"className":1532},[737],[410,1534,649],{"className":1535},[431,432],[410,1537,1212],{"className":1538},[757]," is the smallest discovery time reachable from ",[410,1541,1543],{"className":1542},[413],[410,1544,1546],{"className":1545,"ariaHidden":418},[417],[410,1547,1549,1552],{"className":1548},[422],[410,1550],{"className":1551,"style":676},[426],[410,1553,649],{"className":1554},[431,432],"'s DFS subtree\nusing any number of tree edges (downward) plus ",[405,1557,1558],{},"at most one"," back edge (the\nfinal hop up). It measures the highest ancestor the subtree rooted at ",[410,1561,1563],{"className":1562},[413],[410,1564,1566],{"className":1565,"ariaHidden":418},[417],[410,1567,1569,1572],{"className":1568},[422],[410,1570],{"className":1571,"style":676},[426],[410,1573,649],{"className":1574},[431,432]," can\nreach without going through ",[410,1577,1579],{"className":1578},[413],[410,1580,1582],{"className":1581,"ariaHidden":418},[417],[410,1583,1585,1588],{"className":1584},[422],[410,1586],{"className":1587,"style":676},[426],[410,1589,649],{"className":1590},[431,432],"'s parent. Both quantities are computed in the same\nrecursion: set ",[410,1593,1595],{"className":1594},[413],[410,1596,1598,1631],{"className":1597,"ariaHidden":418},[417],[410,1599,1601,1604,1607,1610,1613,1616,1619,1622,1625,1628],{"className":1600},[422],[410,1602],{"className":1603,"style":733},[426],[410,1605,1193],{"className":1606},[431,432],[410,1608,1197],{"className":1609},[431,432],[410,1611,1201],{"className":1612},[431,432],[410,1614,1205],{"className":1615},[737],[410,1617,649],{"className":1618},[431,432],[410,1620,1212],{"className":1621},[757],[410,1623],{"className":1624,"style":841},[653],[410,1626,1282],{"className":1627},[845],[410,1629],{"className":1630,"style":841},[653],[410,1632,1634,1637,1640,1643,1646,1649,1652],{"className":1633},[422],[410,1635],{"className":1636,"style":733},[426],[410,1638,1257],{"className":1639,"style":1256},[431,432],[410,1641,1261],{"className":1642},[431,432],[410,1644,1266],{"className":1645,"style":1265},[431,432],[410,1647,1205],{"className":1648},[737],[410,1650,649],{"className":1651},[431,432],[410,1653,1212],{"className":1654},[757]," on entry, then relax ",[410,1657,1659],{"className":1658},[413],[410,1660,1662],{"className":1661,"ariaHidden":418},[417],[410,1663,1665,1668,1671,1674,1677,1680,1683],{"className":1664},[422],[410,1666],{"className":1667,"style":733},[426],[410,1669,1257],{"className":1670,"style":1256},[431,432],[410,1672,1261],{"className":1673},[431,432],[410,1675,1266],{"className":1676,"style":1265},[431,432],[410,1678,1205],{"className":1679},[737],[410,1681,649],{"className":1682},[431,432],[410,1684,1212],{"className":1685},[757]," against each\nchild's finished ",[410,1688,1690],{"className":1689},[413],[410,1691,1693],{"className":1692,"ariaHidden":418},[417],[410,1694,1696,1700,1703,1706],{"className":1695},[422],[410,1697],{"className":1698,"style":1699},[426],"height:0.6944em;",[410,1701,1257],{"className":1702,"style":1256},[431,432],[410,1704,1261],{"className":1705},[431,432],[410,1707,1266],{"className":1708,"style":1265},[431,432]," and each back edge's target ",[410,1711,1713],{"className":1712},[413],[410,1714,1716],{"className":1715,"ariaHidden":418},[417],[410,1717,1719,1722,1725,1728],{"className":1718},[422],[410,1720],{"className":1721,"style":1699},[426],[410,1723,1193],{"className":1724},[431,432],[410,1726,1197],{"className":1727},[431,432],[410,1729,1201],{"className":1730},[431,432],[490,1732,1734,1937],{"className":1733},[493,494],[496,1735,1739],{"xmlns":498,"width":1736,"height":1737,"viewBox":1738},"271.150","202.012","-75 -75 203.362 151.509",[503,1740,1741,1744,1751,1754,1761,1764,1771,1774,1781,1784,1791,1794,1801,1804,1808,1811,1840,1859,1878,1898,1918],{"stroke":505,"style":506},[508,1742],{"fill":510,"d":1743},"M-26.507-59.266c0-7.072-5.733-12.804-12.804-12.804s-12.804 5.732-12.804 12.804c0 7.071 5.733 12.803 12.804 12.803s12.804-5.732 12.804-12.803Zm-12.804 0",[503,1745,1747],{"transform":1746},"translate(-3.468 3.075)",[508,1748],{"d":1749,"fill":505,"stroke":505,"className":1750,"style":520},"M-37.149-59.266L-38.880-59.266Q-38.977-59.266-38.977-59.385Q-38.977-59.442-38.946-59.512Q-38.915-59.582-38.854-59.582Q-38.164-59.582-37.764-60.193Q-37.764-60.193-37.738-60.220L-34.468-65.603Q-34.407-65.708-34.279-65.708L-34.191-65.708Q-34.068-65.708-34.055-65.603L-33.427-59.771Q-33.383-59.653-33.192-59.618Q-33-59.582-32.741-59.582Q-32.697-59.582-32.664-59.545Q-32.631-59.508-32.631-59.473Q-32.631-59.266-32.794-59.266L-35.026-59.266Q-35.066-59.266-35.097-59.306Q-35.127-59.345-35.127-59.385Q-35.127-59.446-35.092-59.514Q-35.057-59.582-35-59.582Q-34.723-59.582-34.514-59.626Q-34.306-59.670-34.262-59.824L-34.424-61.309L-36.745-61.309L-37.465-60.114Q-37.549-59.991-37.549-59.868Q-37.549-59.710-37.408-59.646Q-37.268-59.582-37.087-59.582Q-37.043-59.582-37.017-59.549Q-36.991-59.516-36.991-59.473Q-36.991-59.266-37.149-59.266M-34.776-64.548L-36.547-61.626L-34.459-61.626",[519],[508,1752],{"fill":510,"d":1753},"M-26.507-19.432c0-7.072-5.733-12.804-12.804-12.804s-12.804 5.732-12.804 12.804c0 7.07 5.733 12.803 12.804 12.803s12.804-5.732 12.804-12.803Zm-12.804 0",[503,1755,1757],{"transform":1756},"translate(-3.724 42.909)",[508,1758],{"d":1759,"fill":505,"stroke":505,"className":1760,"style":520},"M-35.334-59.266L-38.806-59.266Q-38.915-59.266-38.915-59.385Q-38.915-59.446-38.883-59.514Q-38.850-59.582-38.788-59.582Q-38.287-59.582-38.059-59.635Q-37.931-59.683-37.861-59.912L-36.639-64.829Q-36.622-64.917-36.622-64.961Q-36.622-65.027-36.648-65.045Q-36.819-65.098-37.351-65.098Q-37.457-65.098-37.457-65.216Q-37.457-65.278-37.424-65.346Q-37.391-65.414-37.329-65.414L-34.055-65.414Q-33.651-65.414-33.258-65.278Q-32.864-65.141-32.609-64.858Q-32.354-64.575-32.354-64.162Q-32.354-63.726-32.649-63.366Q-32.943-63.006-33.381-62.782Q-33.818-62.558-34.253-62.478Q-33.893-62.443-33.565-62.285Q-33.238-62.127-33.033-61.850Q-32.829-61.573-32.829-61.208Q-32.829-60.795-33.060-60.435Q-33.290-60.075-33.677-59.813Q-34.064-59.552-34.499-59.409Q-34.934-59.266-35.334-59.266M-37.149-59.644Q-37.149-59.582-36.863-59.582L-35.514-59.582Q-35.066-59.582-34.646-59.820Q-34.227-60.057-33.974-60.450Q-33.721-60.844-33.721-61.292Q-33.721-61.586-33.842-61.824Q-33.963-62.061-34.180-62.197Q-34.398-62.333-34.692-62.333L-36.494-62.333L-37.114-59.850Q-37.149-59.710-37.149-59.644M-35.892-64.764L-36.433-62.597L-35.018-62.597Q-34.600-62.597-34.176-62.810Q-33.752-63.023-33.486-63.388Q-33.220-63.753-33.220-64.188Q-33.220-64.583-33.477-64.840Q-33.734-65.098-34.134-65.098L-35.422-65.098Q-35.681-65.098-35.756-65.051Q-35.831-65.005-35.892-64.764",[519],[508,1762],{"fill":510,"d":1763},"M-39.311-46.263v13.827M-26.507 20.401c0-7.071-5.733-12.803-12.804-12.803S-52.115 13.33-52.115 20.4s5.733 12.804 12.804 12.804 12.804-5.732 12.804-12.804Zm-12.804 0",[503,1765,1767],{"transform":1766},"translate(-3.621 82.743)",[508,1768],{"d":1769,"fill":505,"stroke":505,"className":1770,"style":520},"M-37.979-61.239Q-37.979-60.409-37.492-59.897Q-37.004-59.385-36.169-59.385Q-35.598-59.385-35.064-59.666Q-34.530-59.947-34.145-60.428Q-33.761-60.910-33.616-61.463Q-33.607-61.494-33.583-61.518Q-33.559-61.542-33.523-61.542L-33.418-61.542Q-33.326-61.542-33.326-61.428Q-33.488-60.791-33.941-60.246Q-34.394-59.701-35.020-59.385Q-35.646-59.068-36.314-59.068Q-37.043-59.068-37.619-59.385Q-38.195-59.701-38.524-60.266Q-38.854-60.830-38.854-61.560Q-38.854-62.325-38.505-63.061Q-38.155-63.797-37.573-64.366Q-36.991-64.935-36.239-65.273Q-35.488-65.612-34.732-65.612Q-34.262-65.612-33.864-65.407Q-33.466-65.203-33.220-64.821L-32.508-65.594Q-32.491-65.612-32.451-65.612L-32.398-65.612Q-32.311-65.612-32.311-65.493L-32.913-63.098Q-32.930-63.019-33-63.019L-33.137-63.019Q-33.229-63.019-33.229-63.138Q-33.189-63.318-33.189-63.568Q-33.189-64.030-33.354-64.425Q-33.519-64.821-33.849-65.058Q-34.178-65.295-34.648-65.295Q-35.387-65.295-36.004-64.937Q-36.622-64.579-37.063-63.984Q-37.505-63.388-37.742-62.665Q-37.979-61.942-37.979-61.239",[519],[508,1772],{"fill":510,"d":1773},"M-39.31-6.429V7.398M-26.507 60.235c0-7.071-5.733-12.803-12.804-12.803s-12.804 5.732-12.804 12.803S-46.382 73.04-39.31 73.04s12.804-5.732 12.804-12.804Zm-12.804 0",[503,1775,1777],{"transform":1776},"translate(-3.942 122.577)",[508,1778],{"d":1779,"fill":505,"stroke":505,"className":1780,"style":520},"M-35.593-59.266L-38.814-59.266Q-38.924-59.266-38.924-59.385Q-38.924-59.446-38.891-59.514Q-38.858-59.582-38.797-59.582Q-38.296-59.582-38.067-59.635Q-37.949-59.679-37.870-59.912L-36.648-64.829Q-36.630-64.917-36.630-64.961Q-36.630-65.027-36.657-65.045Q-36.828-65.098-37.360-65.098Q-37.465-65.098-37.465-65.216Q-37.465-65.278-37.432-65.346Q-37.399-65.414-37.338-65.414L-34.055-65.414Q-33.418-65.414-32.926-65.113Q-32.434-64.812-32.168-64.287Q-31.902-63.762-31.902-63.129Q-31.902-62.434-32.203-61.734Q-32.504-61.033-33.027-60.474Q-33.550-59.916-34.218-59.591Q-34.886-59.266-35.593-59.266M-37.131-59.644Q-37.131-59.582-36.846-59.582L-35.747-59.582Q-35.233-59.582-34.743-59.796Q-34.253-60.009-33.866-60.382Q-33.620-60.628-33.407-61.006Q-33.194-61.384-33.044-61.808Q-32.895-62.232-32.818-62.659Q-32.741-63.085-32.741-63.458Q-32.741-63.828-32.851-64.131Q-32.961-64.434-33.174-64.649Q-33.387-64.865-33.684-64.981Q-33.980-65.098-34.363-65.098L-35.404-65.098Q-35.664-65.098-35.738-65.051Q-35.813-65.005-35.874-64.764L-37.096-59.850Q-37.131-59.710-37.131-59.644",[519],[508,1782],{"fill":510,"d":1783},"M-39.31 33.405v13.827M96.24-59.266c0-7.072-5.733-12.804-12.804-12.804s-12.804 5.732-12.804 12.804c0 7.071 5.732 12.803 12.804 12.803 7.071 0 12.804-5.732 12.804-12.803Zm-12.804 0",[503,1785,1787],{"transform":1786},"translate(119.087 3.075)",[508,1788],{"d":1789,"fill":505,"stroke":505,"className":1790,"style":520},"M-33.748-59.266L-38.832-59.266Q-38.942-59.266-38.942-59.385Q-38.942-59.446-38.909-59.514Q-38.876-59.582-38.814-59.582Q-38.313-59.582-38.085-59.635Q-37.966-59.679-37.887-59.912L-36.665-64.829Q-36.648-64.917-36.648-64.961Q-36.648-65.027-36.674-65.045Q-36.846-65.098-37.377-65.098Q-37.483-65.098-37.483-65.216Q-37.483-65.278-37.450-65.346Q-37.417-65.414-37.360-65.414L-32.390-65.414Q-32.346-65.414-32.315-65.379Q-32.284-65.344-32.284-65.295L-32.491-63.458Q-32.508-63.353-32.596-63.353L-32.680-63.353Q-32.776-63.353-32.776-63.476Q-32.732-64.003-32.732-64.118Q-32.732-64.469-32.858-64.673Q-32.983-64.878-33.194-64.966Q-33.405-65.054-33.660-65.076Q-33.915-65.098-34.323-65.098L-35.395-65.098Q-35.655-65.098-35.729-65.051Q-35.804-65.005-35.866-64.764L-36.402-62.615L-35.686-62.615Q-35.207-62.615-34.976-62.676Q-34.745-62.738-34.607-62.935Q-34.468-63.133-34.354-63.586Q-34.336-63.665-34.253-63.665L-34.174-63.665Q-34.134-63.665-34.103-63.634Q-34.073-63.603-34.073-63.559L-34.073-63.524L-34.622-61.327Q-34.653-61.248-34.723-61.248L-34.802-61.248Q-34.846-61.248-34.879-61.285Q-34.912-61.323-34.912-61.362Q-34.912-61.415-34.866-61.599Q-34.820-61.784-34.820-61.903Q-34.820-62.166-35.064-62.232Q-35.308-62.298-35.703-62.298L-36.477-62.298L-37.087-59.850Q-37.123-59.710-37.123-59.644Q-37.123-59.582-36.837-59.582L-35.703-59.582Q-35.053-59.582-34.640-59.679Q-34.227-59.776-33.961-59.993Q-33.695-60.211-33.495-60.554Q-33.295-60.896-33.009-61.560Q-32.965-61.626-32.913-61.626L-32.829-61.626Q-32.785-61.626-32.759-61.593Q-32.732-61.560-32.732-61.516Q-32.732-61.481-32.741-61.472L-33.660-59.328Q-33.690-59.266-33.748-59.266",[519],[508,1792],{"fill":510,"d":1793},"M96.24-19.432c0-7.072-5.733-12.804-12.804-12.804s-12.804 5.732-12.804 12.804c0 7.07 5.732 12.803 12.804 12.803 7.071 0 12.804-5.732 12.804-12.803Zm-12.804 0",[503,1795,1797],{"transform":1796},"translate(119.151 42.909)",[508,1798],{"d":1799,"fill":505,"stroke":505,"className":1800,"style":520},"M-36.204-59.266L-38.845-59.266Q-38.942-59.266-38.942-59.385Q-38.942-59.446-38.909-59.514Q-38.876-59.582-38.814-59.582Q-38.313-59.582-38.085-59.635Q-37.966-59.679-37.887-59.912L-36.665-64.829Q-36.648-64.917-36.648-64.961Q-36.648-65.027-36.674-65.045Q-36.846-65.098-37.377-65.098Q-37.483-65.098-37.483-65.216Q-37.483-65.278-37.450-65.346Q-37.417-65.414-37.360-65.414L-32.517-65.414Q-32.469-65.414-32.438-65.379Q-32.407-65.344-32.407-65.295L-32.614-63.458Q-32.623-63.414-32.651-63.384Q-32.680-63.353-32.724-63.353L-32.803-63.353Q-32.904-63.353-32.904-63.476Q-32.860-64.025-32.860-64.135Q-32.860-64.583-33.060-64.794Q-33.260-65.005-33.561-65.051Q-33.862-65.098-34.389-65.098L-35.395-65.098Q-35.655-65.098-35.729-65.051Q-35.804-65.005-35.866-64.764L-36.433-62.496L-35.738-62.496Q-35.272-62.496-35.042-62.560Q-34.811-62.623-34.675-62.834Q-34.539-63.045-34.433-63.467Q-34.402-63.551-34.332-63.551L-34.253-63.551Q-34.209-63.551-34.176-63.518Q-34.143-63.485-34.143-63.441Q-34.143-63.423-34.152-63.406L-34.701-61.208Q-34.719-61.129-34.802-61.129L-34.881-61.129Q-34.982-61.129-34.982-61.248Q-34.982-61.296-34.936-61.481Q-34.890-61.665-34.890-61.784Q-34.890-62.043-35.130-62.114Q-35.369-62.184-35.756-62.184L-36.512-62.184L-37.096-59.824Q-37.096-59.807-37.098-59.791Q-37.101-59.776-37.105-59.754Q-37.105-59.657-37.035-59.635Q-36.784-59.582-36.151-59.582Q-36.103-59.582-36.074-59.549Q-36.046-59.516-36.046-59.473Q-36.046-59.266-36.204-59.266",[519],[508,1802],{"fill":510,"d":1803},"M83.436-46.263v13.827M-26.307-59.266h96.74",[508,1805],{"fill":510,"d":1806,"style":1807},"M-48.506 11.206c-16.897-16.897-16.897-44.38 0-61.277M90.894-30.084c4.145-5.92 4.145-12.611 0-18.53","stroke-dasharray:3.0,3.0",[508,1809],{"fill":510,"stroke":597,"d":1810,"style":599},"M-39.31 33.405v13.827",[503,1812,1814,1817],{"fill":1813},"var(--tk-bg)",[508,1815],{"stroke":510,"d":1816},"M2.345-59.266c0-7.072-5.732-12.804-12.803-12.804s-12.804 5.732-12.804 12.804c0 7.071 5.732 12.803 12.804 12.803 7.071 0 12.803-5.732 12.803-12.803m-12.803 0",[503,1818,1820,1828,1834],{"fill":505,"stroke":510,"fontSize":1819},"7",[503,1821,1823],{"transform":1822},"translate(22.818 1.75)",[508,1824],{"d":1825,"fill":505,"stroke":505,"className":1826,"style":1827},"M-35.985-59.266L-38.515-59.266L-38.515-59.546Q-37.547-59.546-37.547-59.755L-37.547-63.374Q-37.940-63.186-38.562-63.186L-38.562-63.467Q-38.145-63.467-37.781-63.568Q-37.417-63.668-37.161-63.914L-37.035-63.914Q-36.970-63.897-36.953-63.829L-36.953-59.755Q-36.953-59.546-35.985-59.546",[519],"stroke-width:0.210",[503,1829,1830],{"transform":1822},[508,1831],{"d":1832,"fill":505,"stroke":505,"className":1833,"style":1827},"M-34.778-57.683Q-34.778-57.701-34.764-57.748L-32.112-64.410Q-32.057-64.516-31.951-64.516Q-31.883-64.516-31.834-64.466Q-31.784-64.417-31.784-64.349Q-31.784-64.325-31.786-64.313Q-31.787-64.301-31.791-64.284L-34.443-57.622Q-34.512-57.516-34.604-57.516Q-34.676-57.516-34.727-57.567Q-34.778-57.619-34.778-57.683",[519],[503,1835,1836],{"transform":1822},[508,1837],{"d":1838,"fill":505,"stroke":505,"className":1839,"style":1827},"M-27.902-59.266L-30.432-59.266L-30.432-59.546Q-29.464-59.546-29.464-59.755L-29.464-63.374Q-29.857-63.186-30.479-63.186L-30.479-63.467Q-30.062-63.467-29.698-63.568Q-29.334-63.668-29.078-63.914L-28.952-63.914Q-28.887-63.897-28.870-63.829L-28.870-59.755Q-28.870-59.546-27.902-59.546",[519],[503,1841,1842,1849,1854],{"stroke":510,"fontSize":1819},[503,1843,1845],{"transform":1844},"translate(22.818 41.584)",[508,1846],{"d":1847,"fill":505,"stroke":505,"className":1848,"style":1827},"M-35.985-59.266L-38.870-59.266L-38.870-59.468Q-38.870-59.498-38.843-59.526L-37.595-60.743Q-37.523-60.818-37.481-60.860Q-37.438-60.903-37.359-60.982Q-36.946-61.395-36.715-61.753Q-36.484-62.110-36.484-62.534Q-36.484-62.766-36.563-62.969Q-36.642-63.173-36.783-63.323Q-36.925-63.474-37.120-63.554Q-37.315-63.634-37.547-63.634Q-37.858-63.634-38.116-63.475Q-38.374-63.316-38.504-63.039L-38.484-63.039Q-38.316-63.039-38.209-62.928Q-38.101-62.817-38.101-62.653Q-38.101-62.496-38.210-62.383Q-38.320-62.270-38.484-62.270Q-38.644-62.270-38.757-62.383Q-38.870-62.496-38.870-62.653Q-38.870-63.029-38.662-63.316Q-38.453-63.603-38.118-63.759Q-37.783-63.914-37.428-63.914Q-37.004-63.914-36.624-63.756Q-36.245-63.597-36.011-63.280Q-35.777-62.964-35.777-62.534Q-35.777-62.223-35.917-61.954Q-36.057-61.686-36.262-61.481Q-36.467-61.276-36.830-60.994Q-37.192-60.712-37.301-60.616L-38.156-59.888L-37.513-59.888Q-37.250-59.888-36.961-59.890Q-36.672-59.891-36.454-59.900Q-36.235-59.909-36.218-59.926Q-36.156-59.991-36.119-60.158Q-36.081-60.326-36.043-60.568L-35.777-60.568",[519],[503,1850,1851],{"transform":1844},[508,1852],{"d":1832,"fill":505,"stroke":505,"className":1853,"style":1827},[519],[503,1855,1856],{"transform":1844},[508,1857],{"d":1838,"fill":505,"stroke":505,"className":1858,"style":1827},[519],[503,1860,1861,1868,1873],{"stroke":510,"fontSize":1819},[503,1862,1864],{"transform":1863},"translate(22.818 81.418)",[508,1865],{"d":1866,"fill":505,"stroke":505,"className":1867,"style":1827},"M-38.515-59.813Q-38.395-59.656-38.204-59.557Q-38.012-59.457-37.797-59.418Q-37.582-59.379-37.359-59.379Q-37.062-59.379-36.867-59.534Q-36.672-59.690-36.582-59.944Q-36.491-60.199-36.491-60.483Q-36.491-60.777-36.583-61.028Q-36.676-61.279-36.874-61.435Q-37.072-61.590-37.366-61.590L-37.882-61.590Q-37.910-61.590-37.935-61.616Q-37.961-61.641-37.961-61.665L-37.961-61.737Q-37.961-61.768-37.935-61.790Q-37.910-61.812-37.882-61.812L-37.441-61.843Q-37.079-61.843-36.859-62.200Q-36.638-62.558-36.638-62.947Q-36.638-63.275-36.833-63.479Q-37.028-63.682-37.359-63.682Q-37.646-63.682-37.899-63.598Q-38.152-63.515-38.316-63.327Q-38.169-63.327-38.069-63.212Q-37.968-63.098-37.968-62.947Q-37.968-62.797-38.074-62.687Q-38.180-62.578-38.337-62.578Q-38.498-62.578-38.607-62.687Q-38.716-62.797-38.716-62.947Q-38.716-63.272-38.508-63.491Q-38.299-63.709-37.983-63.812Q-37.667-63.914-37.359-63.914Q-37.041-63.914-36.713-63.810Q-36.385-63.706-36.158-63.484Q-35.931-63.262-35.931-62.947Q-35.931-62.513-36.218-62.188Q-36.505-61.864-36.939-61.717Q-36.628-61.652-36.348-61.486Q-36.067-61.320-35.890-61.062Q-35.712-60.804-35.712-60.483Q-35.712-60.073-35.956-59.763Q-36.201-59.454-36.582-59.290Q-36.963-59.126-37.359-59.126Q-37.728-59.126-38.086-59.239Q-38.443-59.351-38.687-59.601Q-38.932-59.850-38.932-60.220Q-38.932-60.391-38.815-60.503Q-38.699-60.616-38.528-60.616Q-38.419-60.616-38.328-60.565Q-38.238-60.514-38.183-60.421Q-38.128-60.329-38.128-60.220Q-38.128-60.052-38.241-59.933Q-38.354-59.813-38.515-59.813",[519],[503,1869,1870],{"transform":1863},[508,1871],{"d":1832,"fill":505,"stroke":505,"className":1872,"style":1827},[519],[503,1874,1875],{"transform":1863},[508,1876],{"d":1838,"fill":505,"stroke":505,"className":1877,"style":1827},[519],[503,1879,1880,1887,1892],{"fill":597,"stroke":510,"fontSize":1819},[503,1881,1883],{"transform":1882},"translate(22.818 121.252)",[508,1884],{"d":1885,"fill":597,"stroke":597,"className":1886,"style":1827},"M-36.994-60.414L-39.038-60.414L-39.038-60.695L-36.707-63.867Q-36.672-63.914-36.607-63.914L-36.471-63.914Q-36.426-63.914-36.399-63.887Q-36.372-63.860-36.372-63.815L-36.372-60.695L-35.609-60.695L-35.609-60.414L-36.372-60.414L-36.372-59.755Q-36.372-59.546-35.616-59.546L-35.616-59.266L-37.749-59.266L-37.749-59.546Q-36.994-59.546-36.994-59.755L-36.994-60.414M-36.946-63.139L-38.737-60.695L-36.946-60.695",[519],[503,1888,1889],{"transform":1882},[508,1890],{"d":1832,"fill":597,"stroke":597,"className":1891,"style":1827},[519],[503,1893,1894],{"transform":1882},[508,1895],{"d":1896,"fill":597,"stroke":597,"className":1897,"style":1827},"M-28.911-60.414L-30.955-60.414L-30.955-60.695L-28.624-63.867Q-28.589-63.914-28.524-63.914L-28.388-63.914Q-28.343-63.914-28.316-63.887Q-28.289-63.860-28.289-63.815L-28.289-60.695L-27.526-60.695L-27.526-60.414L-28.289-60.414L-28.289-59.755Q-28.289-59.546-27.533-59.546L-27.533-59.266L-29.666-59.266L-29.666-59.546Q-28.911-59.546-28.911-59.755L-28.911-60.414M-28.863-63.139L-30.654-60.695L-28.863-60.695",[519],[503,1899,1900,1907,1912],{"stroke":510,"fontSize":1819},[503,1901,1903],{"transform":1902},"translate(145.565 1.75)",[508,1904],{"d":1905,"fill":505,"stroke":505,"className":1906,"style":1827},"M-38.504-60.028L-38.535-60.028Q-38.398-59.731-38.101-59.555Q-37.804-59.379-37.476-59.379Q-37.113-59.379-36.886-59.557Q-36.659-59.734-36.565-60.023Q-36.471-60.312-36.471-60.674Q-36.471-60.989-36.525-61.274Q-36.580-61.559-36.753-61.765Q-36.925-61.970-37.240-61.970Q-37.513-61.970-37.696-61.903Q-37.879-61.836-37.983-61.747Q-38.087-61.659-38.183-61.549Q-38.279-61.440-38.323-61.430L-38.402-61.430Q-38.474-61.447-38.491-61.518L-38.491-63.836Q-38.491-63.870-38.467-63.892Q-38.443-63.914-38.409-63.914L-38.381-63.914Q-38.094-63.798-37.826-63.744Q-37.558-63.689-37.281-63.689Q-37.004-63.689-36.734-63.744Q-36.464-63.798-36.184-63.914L-36.160-63.914Q-36.125-63.914-36.102-63.891Q-36.078-63.867-36.078-63.836L-36.078-63.767Q-36.078-63.740-36.098-63.720Q-36.372-63.405-36.756-63.229Q-37.141-63.053-37.554-63.053Q-37.893-63.053-38.210-63.139L-38.210-61.857Q-37.814-62.192-37.240-62.192Q-36.836-62.192-36.500-61.982Q-36.163-61.771-35.970-61.419Q-35.777-61.067-35.777-60.667Q-35.777-60.336-35.917-60.050Q-36.057-59.765-36.301-59.555Q-36.546-59.345-36.848-59.235Q-37.151-59.126-37.469-59.126Q-37.828-59.126-38.154-59.290Q-38.480-59.454-38.675-59.746Q-38.870-60.038-38.870-60.401Q-38.870-60.551-38.764-60.657Q-38.658-60.763-38.504-60.763Q-38.351-60.763-38.246-60.659Q-38.142-60.555-38.142-60.401Q-38.142-60.244-38.246-60.136Q-38.351-60.028-38.504-60.028",[519],[503,1908,1909],{"transform":1902},[508,1910],{"d":1832,"fill":505,"stroke":505,"className":1911,"style":1827},[519],[503,1913,1914],{"transform":1902},[508,1915],{"d":1916,"fill":505,"stroke":505,"className":1917,"style":1827},"M-30.421-60.028L-30.452-60.028Q-30.315-59.731-30.018-59.555Q-29.721-59.379-29.393-59.379Q-29.030-59.379-28.803-59.557Q-28.576-59.734-28.482-60.023Q-28.388-60.312-28.388-60.674Q-28.388-60.989-28.442-61.274Q-28.497-61.559-28.670-61.765Q-28.842-61.970-29.157-61.970Q-29.430-61.970-29.613-61.903Q-29.796-61.836-29.900-61.747Q-30.004-61.659-30.100-61.549Q-30.196-61.440-30.240-61.430L-30.319-61.430Q-30.391-61.447-30.408-61.518L-30.408-63.836Q-30.408-63.870-30.384-63.892Q-30.360-63.914-30.326-63.914L-30.298-63.914Q-30.011-63.798-29.743-63.744Q-29.475-63.689-29.198-63.689Q-28.921-63.689-28.651-63.744Q-28.381-63.798-28.101-63.914L-28.077-63.914Q-28.042-63.914-28.019-63.891Q-27.995-63.867-27.995-63.836L-27.995-63.767Q-27.995-63.740-28.015-63.720Q-28.289-63.405-28.673-63.229Q-29.058-63.053-29.471-63.053Q-29.810-63.053-30.127-63.139L-30.127-61.857Q-29.731-62.192-29.157-62.192Q-28.753-62.192-28.417-61.982Q-28.080-61.771-27.887-61.419Q-27.694-61.067-27.694-60.667Q-27.694-60.336-27.834-60.050Q-27.974-59.765-28.218-59.555Q-28.463-59.345-28.765-59.235Q-29.068-59.126-29.386-59.126Q-29.745-59.126-30.071-59.290Q-30.397-59.454-30.592-59.746Q-30.787-60.038-30.787-60.401Q-30.787-60.551-30.681-60.657Q-30.575-60.763-30.421-60.763Q-30.268-60.763-30.163-60.659Q-30.059-60.555-30.059-60.401Q-30.059-60.244-30.163-60.136Q-30.268-60.028-30.421-60.028",[519],[503,1919,1920,1927,1932],{"stroke":510,"fontSize":1819},[503,1921,1923],{"transform":1922},"translate(145.565 41.584)",[508,1924],{"d":1925,"fill":505,"stroke":505,"className":1926,"style":1827},"M-37.322-59.126Q-37.780-59.126-38.098-59.341Q-38.415-59.557-38.597-59.909Q-38.778-60.261-38.855-60.681Q-38.932-61.101-38.932-61.529Q-38.932-62.113-38.679-62.669Q-38.426-63.224-37.956-63.569Q-37.486-63.914-36.888-63.914Q-36.478-63.914-36.194-63.716Q-35.910-63.518-35.910-63.115Q-35.910-63.019-35.956-62.940Q-36.002-62.862-36.083-62.817Q-36.163-62.773-36.252-62.773Q-36.399-62.773-36.500-62.870Q-36.601-62.968-36.601-63.115Q-36.601-63.245-36.510-63.352Q-36.419-63.460-36.286-63.460Q-36.474-63.682-36.888-63.682Q-37.202-63.682-37.476-63.518Q-37.749-63.354-37.916-63.080Q-38.104-62.790-38.169-62.424Q-38.234-62.058-38.234-61.604Q-38.084-61.898-37.819-62.076Q-37.554-62.253-37.240-62.253Q-36.809-62.253-36.460-62.047Q-36.112-61.840-35.912-61.484Q-35.712-61.129-35.712-60.702Q-35.712-60.257-35.929-59.897Q-36.146-59.536-36.519-59.331Q-36.891-59.126-37.322-59.126M-37.322-59.379Q-36.946-59.379-36.742-59.562Q-36.539-59.745-36.476-60.028Q-36.413-60.312-36.413-60.702Q-36.413-61.088-36.467-61.368Q-36.522-61.648-36.717-61.840Q-36.912-62.031-37.281-62.031Q-37.571-62.031-37.783-61.855Q-37.995-61.679-38.103-61.406Q-38.210-61.132-38.210-60.849L-38.210-60.708L-38.210-60.667Q-38.210-60.162-37.998-59.770Q-37.787-59.379-37.322-59.379",[519],[503,1928,1929],{"transform":1922},[508,1930],{"d":1832,"fill":505,"stroke":505,"className":1931,"style":1827},[519],[503,1933,1934],{"transform":1922},[508,1935],{"d":1916,"fill":505,"stroke":505,"className":1936,"style":1827},[519],[628,1938,1940,1941],{"className":1939},[631],"DFS tree (solid = tree edge, dashed = back edge); bridge ",[410,1942,1944],{"className":1943},[413],[410,1945,1947,1967,2001],{"className":1946,"ariaHidden":418},[417],[410,1948,1950,1954,1957,1961,1964],{"className":1949},[422],[410,1951],{"className":1952,"style":1953},[426],"height:0.3669em;",[410,1955],{"className":1956,"style":841},[653],[410,1958,1960],{"className":1959},[845],"↔",[410,1962],{"className":1963,"style":841},[653],[410,1965],{"className":1966,"style":841},[653],[410,1968,1970,1973,1976,1979,1982,1985,1988,1991,1994,1998],{"className":1969},[422],[410,1971],{"className":1972,"style":733},[426],[410,1974,1257],{"className":1975,"style":1256},[431,432],[410,1977,1261],{"className":1978},[431,432],[410,1980,1266],{"className":1981,"style":1265},[431,432],[410,1983,1205],{"className":1984},[737],[410,1986,681],{"className":1987,"style":680},[431,432],[410,1989,1212],{"className":1990},[757],[410,1992],{"className":1993,"style":841},[653],[410,1995,1997],{"className":1996},[845],">",[410,1999],{"className":2000,"style":841},[653],[410,2002,2004,2007,2010,2013,2016,2019,2022],{"className":2003},[422],[410,2005],{"className":2006,"style":733},[426],[410,2008,1193],{"className":2009},[431,432],[410,2011,1197],{"className":2012},[431,432],[410,2014,1201],{"className":2015},[431,432],[410,2017,1205],{"className":2018},[737],[410,2020,649],{"className":2021},[431,432],[410,2023,1212],{"className":2024},[757],[381,2026,2027,2028,2062,2063,2105,2106,2190,2191,707,2206,2221,2222,2262,2263,2302,2303,2320,2321,2403,2404,2419,2420,2435,2436,2475,2476,2491,2492,2533,2534,2549,2550,2591,2592,2607],{},"In the figure each node is labeled ",[410,2029,2031],{"className":2030},[413],[410,2032,2034],{"className":2033,"ariaHidden":418},[417],[410,2035,2037,2040,2043,2046,2049,2053,2056,2059],{"className":2036},[422],[410,2038],{"className":2039,"style":733},[426],[410,2041,1193],{"className":2042},[431,432],[410,2044,1197],{"className":2045},[431,432],[410,2047,1201],{"className":2048},[431,432],[410,2050,2052],{"className":2051},[431],"\u002F",[410,2054,1257],{"className":2055,"style":1256},[431,432],[410,2057,1261],{"className":2058},[431,432],[410,2060,1266],{"className":2061,"style":1265},[431,432],". The back edge ",[410,2064,2066],{"className":2065},[413],[410,2067,2069,2095],{"className":2068,"ariaHidden":418},[417],[410,2070,2072,2075,2080,2083,2086,2089,2092],{"className":2071},[422],[410,2073],{"className":2074,"style":427},[426],[410,2076,2079],{"className":2077,"style":2078},[431,432],"margin-right:0.0715em;","C",[410,2081],{"className":2082,"style":654},[653],[410,2084],{"className":2085,"style":841},[653],[410,2087,846],{"className":2088},[845],[410,2090],{"className":2091,"style":654},[653],[410,2093],{"className":2094,"style":841},[653],[410,2096,2098,2101],{"className":2097},[422],[410,2099],{"className":2100,"style":427},[426],[410,2102,2104],{"className":2103},[431,432],"A"," pulls\n",[410,2107,2109],{"className":2108},[413],[410,2110,2112,2145,2180],{"className":2111,"ariaHidden":418},[417],[410,2113,2115,2118,2121,2124,2127,2130,2133,2136,2139,2142],{"className":2114},[422],[410,2116],{"className":2117,"style":733},[426],[410,2119,1257],{"className":2120,"style":1256},[431,432],[410,2122,1261],{"className":2123},[431,432],[410,2125,1266],{"className":2126,"style":1265},[431,432],[410,2128,1205],{"className":2129},[737],[410,2131,2079],{"className":2132,"style":2078},[431,432],[410,2134,1212],{"className":2135},[757],[410,2137],{"className":2138,"style":841},[653],[410,2140,1282],{"className":2141},[845],[410,2143],{"className":2144,"style":841},[653],[410,2146,2148,2151,2154,2157,2160,2163,2168,2171,2174,2177],{"className":2147},[422],[410,2149],{"className":2150,"style":733},[426],[410,2152,1257],{"className":2153,"style":1256},[431,432],[410,2155,1261],{"className":2156},[431,432],[410,2158,1266],{"className":2159,"style":1265},[431,432],[410,2161,1205],{"className":2162},[737],[410,2164,2167],{"className":2165,"style":2166},[431,432],"margin-right:0.0502em;","B",[410,2169,1212],{"className":2170},[757],[410,2172],{"className":2173,"style":841},[653],[410,2175,1282],{"className":2176},[845],[410,2178],{"className":2179,"style":841},[653],[410,2181,2183,2187],{"className":2182},[422],[410,2184],{"className":2185,"style":2186},[426],"height:0.6444em;",[410,2188,474],{"className":2189},[431],", so the subtrees of ",[410,2192,2194],{"className":2193},[413],[410,2195,2197],{"className":2196,"ariaHidden":418},[417],[410,2198,2200,2203],{"className":2199},[422],[410,2201],{"className":2202,"style":427},[426],[410,2204,2167],{"className":2205,"style":2166},[431,432],[410,2207,2209],{"className":2208},[413],[410,2210,2212],{"className":2211,"ariaHidden":418},[417],[410,2213,2215,2218],{"className":2214},[422],[410,2216],{"className":2217,"style":427},[426],[410,2219,2079],{"className":2220,"style":2078},[431,432]," can all climb back above their\nparents: none of ",[410,2223,2225],{"className":2224},[413],[410,2226,2228,2253],{"className":2227,"ariaHidden":418},[417],[410,2229,2231,2235,2238,2241,2244,2247,2250],{"className":2230},[422],[410,2232],{"className":2233,"style":2234},[426],"height:0.7667em;vertical-align:-0.0833em;",[410,2236,2104],{"className":2237},[431,432],[410,2239],{"className":2240,"style":654},[653],[410,2242],{"className":2243,"style":658},[653],[410,2245,663],{"className":2246},[662],[410,2248],{"className":2249,"style":654},[653],[410,2251],{"className":2252,"style":658},[653],[410,2254,2256,2259],{"className":2255},[422],[410,2257],{"className":2258,"style":427},[426],[410,2260,2167],{"className":2261,"style":2166},[431,432],", ",[410,2264,2266],{"className":2265},[413],[410,2267,2269,2293],{"className":2268,"ariaHidden":418},[417],[410,2270,2272,2275,2278,2281,2284,2287,2290],{"className":2271},[422],[410,2273],{"className":2274,"style":2234},[426],[410,2276,2167],{"className":2277,"style":2166},[431,432],[410,2279],{"className":2280,"style":654},[653],[410,2282],{"className":2283,"style":658},[653],[410,2285,663],{"className":2286},[662],[410,2288],{"className":2289,"style":654},[653],[410,2291],{"className":2292,"style":658},[653],[410,2294,2296,2299],{"className":2295},[422],[410,2297],{"className":2298,"style":427},[426],[410,2300,2079],{"className":2301,"style":2078},[431,432]," is a bridge. But ",[410,2304,2306],{"className":2305},[413],[410,2307,2309],{"className":2308,"ariaHidden":418},[417],[410,2310,2312,2315],{"className":2311},[422],[410,2313],{"className":2314,"style":427},[426],[410,2316,2319],{"className":2317,"style":2318},[431,432],"margin-right:0.0278em;","D"," is a dead end,\n",[410,2322,2324],{"className":2323},[413],[410,2325,2327,2360,2393],{"className":2326,"ariaHidden":418},[417],[410,2328,2330,2333,2336,2339,2342,2345,2348,2351,2354,2357],{"className":2329},[422],[410,2331],{"className":2332,"style":733},[426],[410,2334,1257],{"className":2335,"style":1256},[431,432],[410,2337,1261],{"className":2338},[431,432],[410,2340,1266],{"className":2341,"style":1265},[431,432],[410,2343,1205],{"className":2344},[737],[410,2346,2319],{"className":2347,"style":2318},[431,432],[410,2349,1212],{"className":2350},[757],[410,2352],{"className":2353,"style":841},[653],[410,2355,1282],{"className":2356},[845],[410,2358],{"className":2359,"style":841},[653],[410,2361,2363,2366,2369,2372,2375,2378,2381,2384,2387,2390],{"className":2362},[422],[410,2364],{"className":2365,"style":733},[426],[410,2367,1193],{"className":2368},[431,432],[410,2370,1197],{"className":2371},[431,432],[410,2373,1201],{"className":2374},[431,432],[410,2376,1205],{"className":2377},[737],[410,2379,2319],{"className":2380,"style":2318},[431,432],[410,2382,1212],{"className":2383},[757],[410,2385],{"className":2386,"style":841},[653],[410,2388,1282],{"className":2389},[845],[410,2391],{"className":2392,"style":841},[653],[410,2394,2396,2399],{"className":2395},[422],[410,2397],{"className":2398,"style":2186},[426],[410,2400,2402],{"className":2401},[431],"4",", nothing in ",[410,2405,2407],{"className":2406},[413],[410,2408,2410],{"className":2409,"ariaHidden":418},[417],[410,2411,2413,2416],{"className":2412},[422],[410,2414],{"className":2415,"style":427},[426],[410,2417,2319],{"className":2418,"style":2318},[431,432],"'s subtree reaches above ",[410,2421,2423],{"className":2422},[413],[410,2424,2426],{"className":2425,"ariaHidden":418},[417],[410,2427,2429,2432],{"className":2428},[422],[410,2430],{"className":2431,"style":427},[426],[410,2433,2079],{"className":2434,"style":2078},[431,432],", so cutting\n",[410,2437,2439],{"className":2438},[413],[410,2440,2442,2466],{"className":2441,"ariaHidden":418},[417],[410,2443,2445,2448,2451,2454,2457,2460,2463],{"className":2444},[422],[410,2446],{"className":2447,"style":2234},[426],[410,2449,2079],{"className":2450,"style":2078},[431,432],[410,2452],{"className":2453,"style":654},[653],[410,2455],{"className":2456,"style":658},[653],[410,2458,663],{"className":2459},[662],[410,2461],{"className":2462,"style":654},[653],[410,2464],{"className":2465,"style":658},[653],[410,2467,2469,2472],{"className":2468},[422],[410,2470],{"className":2471,"style":427},[426],[410,2473,2319],{"className":2474,"style":2318},[431,432]," strands ",[410,2477,2479],{"className":2478},[413],[410,2480,2482],{"className":2481,"ariaHidden":418},[417],[410,2483,2485,2488],{"className":2484},[422],[410,2486],{"className":2487,"style":427},[426],[410,2489,2319],{"className":2490,"style":2318},[431,432],". The edge ",[410,2493,2495],{"className":2494},[413],[410,2496,2498,2522],{"className":2497,"ariaHidden":418},[417],[410,2499,2501,2504,2507,2510,2513,2516,2519],{"className":2500},[422],[410,2502],{"className":2503,"style":2234},[426],[410,2505,2104],{"className":2506},[431,432],[410,2508],{"className":2509,"style":654},[653],[410,2511],{"className":2512,"style":658},[653],[410,2514,663],{"className":2515},[662],[410,2517],{"className":2518,"style":654},[653],[410,2520],{"className":2521,"style":658},[653],[410,2523,2525,2528],{"className":2524},[422],[410,2526],{"className":2527,"style":427},[426],[410,2529,2532],{"className":2530,"style":2531},[431,432],"margin-right:0.0576em;","E"," is a bridge too, since ",[410,2535,2537],{"className":2536},[413],[410,2538,2540],{"className":2539,"ariaHidden":418},[417],[410,2541,2543,2546],{"className":2542},[422],[410,2544],{"className":2545,"style":427},[426],[410,2547,2532],{"className":2548,"style":2531},[431,432],"'s only escape, the\nback edge ",[410,2551,2553],{"className":2552},[413],[410,2554,2556,2582],{"className":2555,"ariaHidden":418},[417],[410,2557,2559,2562,2567,2570,2573,2576,2579],{"className":2558},[422],[410,2560],{"className":2561,"style":427},[426],[410,2563,2566],{"className":2564,"style":2565},[431,432],"margin-right:0.1389em;","F",[410,2568],{"className":2569,"style":654},[653],[410,2571],{"className":2572,"style":841},[653],[410,2574,846],{"className":2575},[845],[410,2577],{"className":2578,"style":654},[653],[410,2580],{"className":2581,"style":841},[653],[410,2583,2585,2588],{"className":2584},[422],[410,2586],{"className":2587,"style":427},[426],[410,2589,2532],{"className":2590,"style":2531},[431,432],", stays inside ",[410,2593,2595],{"className":2594},[413],[410,2596,2598],{"className":2597,"ariaHidden":418},[417],[410,2599,2601,2604],{"className":2600},[422],[410,2602],{"className":2603,"style":427},[426],[410,2605,2532],{"className":2606,"style":2531},[431,432],"'s own subtree.",[684,2609,2611],{"id":2610},"the-bridge-criterion","The bridge criterion",[399,2613,2615],{"type":2614},"theorem",[381,2616,2617,1177,2620,2650,2651,2666,2667,2697,2698,1505],{},[405,2618,2619],{},"Theorem (bridge).",[410,2621,2623],{"className":2622},[413],[410,2624,2626],{"className":2625,"ariaHidden":418},[417],[410,2627,2629,2632,2635,2638,2641,2644,2647],{"className":2628},[422],[410,2630],{"className":2631,"style":733},[426],[410,2633,1310],{"className":2634},[737],[410,2636,649],{"className":2637},[431,432],[410,2639,746],{"className":2640},[745],[410,2642],{"className":2643,"style":750},[653],[410,2645,681],{"className":2646,"style":680},[431,432],[410,2648,1501],{"className":2649},[757]," be a tree edge with ",[410,2652,2654],{"className":2653},[413],[410,2655,2657],{"className":2656,"ariaHidden":418},[417],[410,2658,2660,2663],{"className":2659},[422],[410,2661],{"className":2662,"style":676},[426],[410,2664,681],{"className":2665,"style":680},[431,432]," the child. Then\n",[410,2668,2670],{"className":2669},[413],[410,2671,2673],{"className":2672,"ariaHidden":418},[417],[410,2674,2676,2679,2682,2685,2688,2691,2694],{"className":2675},[422],[410,2677],{"className":2678,"style":733},[426],[410,2680,1310],{"className":2681},[737],[410,2683,649],{"className":2684},[431,432],[410,2686,746],{"className":2687},[745],[410,2689],{"className":2690,"style":750},[653],[410,2692,681],{"className":2693,"style":680},[431,432],[410,2695,1501],{"className":2696},[757]," is a bridge ",[410,2699,2701],{"className":2700},[413],[410,2702,2704,2722,2755],{"className":2703,"ariaHidden":418},[417],[410,2705,2707,2710,2713,2716,2719],{"className":2706},[422],[410,2708],{"className":2709,"style":1953},[426],[410,2711],{"className":2712,"style":841},[653],[410,2714,1960],{"className":2715},[845],[410,2717],{"className":2718,"style":841},[653],[410,2720],{"className":2721,"style":841},[653],[410,2723,2725,2728,2731,2734,2737,2740,2743,2746,2749,2752],{"className":2724},[422],[410,2726],{"className":2727,"style":733},[426],[410,2729,1257],{"className":2730,"style":1256},[431,432],[410,2732,1261],{"className":2733},[431,432],[410,2735,1266],{"className":2736,"style":1265},[431,432],[410,2738,1205],{"className":2739},[737],[410,2741,681],{"className":2742,"style":680},[431,432],[410,2744,1212],{"className":2745},[757],[410,2747],{"className":2748,"style":841},[653],[410,2750,1997],{"className":2751},[845],[410,2753],{"className":2754,"style":841},[653],[410,2756,2758,2761,2764,2767,2770,2773,2776],{"className":2757},[422],[410,2759],{"className":2760,"style":733},[426],[410,2762,1193],{"className":2763},[431,432],[410,2765,1197],{"className":2766},[431,432],[410,2768,1201],{"className":2769},[431,432],[410,2771,1205],{"className":2772},[737],[410,2774,649],{"className":2775},[431,432],[410,2777,1212],{"className":2778},[757],[381,2780,2781,2784,2785,2815,2816,2831,2832,2847,2848,2863,2864,2927,2928,2992,2993,3008,3009,3039,3040,3103,3104,3119,3120,3150,3151,3181,3182,3197,3198,3261,3262],{},[394,2782,2783],{},"Why."," Removing the tree edge ",[410,2786,2788],{"className":2787},[413],[410,2789,2791],{"className":2790,"ariaHidden":418},[417],[410,2792,2794,2797,2800,2803,2806,2809,2812],{"className":2793},[422],[410,2795],{"className":2796,"style":733},[426],[410,2798,1310],{"className":2799},[737],[410,2801,649],{"className":2802},[431,432],[410,2804,746],{"className":2805},[745],[410,2807],{"className":2808,"style":750},[653],[410,2810,681],{"className":2811,"style":680},[431,432],[410,2813,1501],{"className":2814},[757]," separates ",[410,2817,2819],{"className":2818},[413],[410,2820,2822],{"className":2821,"ariaHidden":418},[417],[410,2823,2825,2828],{"className":2824},[422],[410,2826],{"className":2827,"style":676},[426],[410,2829,681],{"className":2830,"style":680},[431,432],"'s subtree from the rest of the\ntree. The only edges that could still bind the subtree to the upper graph are\nback edges out of it. A back edge from inside ",[410,2833,2835],{"className":2834},[413],[410,2836,2838],{"className":2837,"ariaHidden":418},[417],[410,2839,2841,2844],{"className":2840},[422],[410,2842],{"className":2843,"style":676},[426],[410,2845,681],{"className":2846,"style":680},[431,432],"'s subtree lands on some ancestor\n",[410,2849,2851],{"className":2850},[413],[410,2852,2854],{"className":2853,"ariaHidden":418},[417],[410,2855,2857,2860],{"className":2856},[422],[410,2858],{"className":2859,"style":676},[426],[410,2861,1266],{"className":2862,"style":1265},[431,432]," with ",[410,2865,2867],{"className":2866},[413],[410,2868,2870,2903],{"className":2869,"ariaHidden":418},[417],[410,2871,2873,2876,2879,2882,2885,2888,2891,2894,2897,2900],{"className":2872},[422],[410,2874],{"className":2875,"style":733},[426],[410,2877,1193],{"className":2878},[431,432],[410,2880,1197],{"className":2881},[431,432],[410,2883,1201],{"className":2884},[431,432],[410,2886,1205],{"className":2887},[737],[410,2889,1266],{"className":2890,"style":1265},[431,432],[410,2892,1212],{"className":2893},[757],[410,2895],{"className":2896,"style":841},[653],[410,2898,1282],{"className":2899},[845],[410,2901],{"className":2902,"style":841},[653],[410,2904,2906,2909,2912,2915,2918,2921,2924],{"className":2905},[422],[410,2907],{"className":2908,"style":733},[426],[410,2910,1257],{"className":2911,"style":1256},[431,432],[410,2913,1261],{"className":2914},[431,432],[410,2916,1266],{"className":2917,"style":1265},[431,432],[410,2919,1205],{"className":2920},[737],[410,2922,681],{"className":2923,"style":680},[431,432],[410,2925,1212],{"className":2926},[757]," (its lowest reach). If ",[410,2929,2931],{"className":2930},[413],[410,2932,2934,2968],{"className":2933,"ariaHidden":418},[417],[410,2935,2937,2940,2943,2946,2949,2952,2955,2958,2961,2965],{"className":2936},[422],[410,2938],{"className":2939,"style":733},[426],[410,2941,1257],{"className":2942,"style":1256},[431,432],[410,2944,1261],{"className":2945},[431,432],[410,2947,1266],{"className":2948,"style":1265},[431,432],[410,2950,1205],{"className":2951},[737],[410,2953,681],{"className":2954,"style":680},[431,432],[410,2956,1212],{"className":2957},[757],[410,2959],{"className":2960,"style":841},[653],[410,2962,2964],{"className":2963},[845],"≤",[410,2966],{"className":2967,"style":841},[653],[410,2969,2971,2974,2977,2980,2983,2986,2989],{"className":2970},[422],[410,2972],{"className":2973,"style":733},[426],[410,2975,1193],{"className":2976},[431,432],[410,2978,1197],{"className":2979},[431,432],[410,2981,1201],{"className":2982},[431,432],[410,2984,1205],{"className":2985},[737],[410,2987,649],{"className":2988},[431,432],[410,2990,1212],{"className":2991},[757]," that\nancestor is ",[410,2994,2996],{"className":2995},[413],[410,2997,2999],{"className":2998,"ariaHidden":418},[417],[410,3000,3002,3005],{"className":3001},[422],[410,3003],{"className":3004,"style":676},[426],[410,3006,649],{"className":3007},[431,432]," or higher, so an alternative route exists and ",[410,3010,3012],{"className":3011},[413],[410,3013,3015],{"className":3014,"ariaHidden":418},[417],[410,3016,3018,3021,3024,3027,3030,3033,3036],{"className":3017},[422],[410,3019],{"className":3020,"style":733},[426],[410,3022,1310],{"className":3023},[737],[410,3025,649],{"className":3026},[431,432],[410,3028,746],{"className":3029},[745],[410,3031],{"className":3032,"style":750},[653],[410,3034,681],{"className":3035,"style":680},[431,432],[410,3037,1501],{"className":3038},[757]," is not a\nbridge. If ",[410,3041,3043],{"className":3042},[413],[410,3044,3046,3079],{"className":3045,"ariaHidden":418},[417],[410,3047,3049,3052,3055,3058,3061,3064,3067,3070,3073,3076],{"className":3048},[422],[410,3050],{"className":3051,"style":733},[426],[410,3053,1257],{"className":3054,"style":1256},[431,432],[410,3056,1261],{"className":3057},[431,432],[410,3059,1266],{"className":3060,"style":1265},[431,432],[410,3062,1205],{"className":3063},[737],[410,3065,681],{"className":3066,"style":680},[431,432],[410,3068,1212],{"className":3069},[757],[410,3071],{"className":3072,"style":841},[653],[410,3074,1997],{"className":3075},[845],[410,3077],{"className":3078,"style":841},[653],[410,3080,3082,3085,3088,3091,3094,3097,3100],{"className":3081},[422],[410,3083],{"className":3084,"style":733},[426],[410,3086,1193],{"className":3087},[431,432],[410,3089,1197],{"className":3090},[431,432],[410,3092,1201],{"className":3093},[431,432],[410,3095,1205],{"className":3096},[737],[410,3098,649],{"className":3099},[431,432],[410,3101,1212],{"className":3102},[757]," no back edge escapes above ",[410,3105,3107],{"className":3106},[413],[410,3108,3110],{"className":3109,"ariaHidden":418},[417],[410,3111,3113,3116],{"className":3112},[422],[410,3114],{"className":3115,"style":676},[426],[410,3117,649],{"className":3118},[431,432]," through any vertex\nother than via the edge ",[410,3121,3123],{"className":3122},[413],[410,3124,3126],{"className":3125,"ariaHidden":418},[417],[410,3127,3129,3132,3135,3138,3141,3144,3147],{"className":3128},[422],[410,3130],{"className":3131,"style":733},[426],[410,3133,1310],{"className":3134},[737],[410,3136,649],{"className":3137},[431,432],[410,3139,746],{"className":3140},[745],[410,3142],{"className":3143,"style":750},[653],[410,3145,681],{"className":3146,"style":680},[431,432],[410,3148,1501],{"className":3149},[757]," itself, so cutting it disconnects the subtree:\n",[410,3152,3154],{"className":3153},[413],[410,3155,3157],{"className":3156,"ariaHidden":418},[417],[410,3158,3160,3163,3166,3169,3172,3175,3178],{"className":3159},[422],[410,3161],{"className":3162,"style":733},[426],[410,3164,1310],{"className":3165},[737],[410,3167,649],{"className":3168},[431,432],[410,3170,746],{"className":3171},[745],[410,3173],{"className":3174,"style":750},[653],[410,3176,681],{"className":3177,"style":680},[431,432],[410,3179,1501],{"className":3180},[757]," is a bridge. Note the strict inequality: reaching ",[410,3183,3185],{"className":3184},[413],[410,3186,3188],{"className":3187,"ariaHidden":418},[417],[410,3189,3191,3194],{"className":3190},[422],[410,3192],{"className":3193,"style":676},[426],[410,3195,649],{"className":3196},[431,432]," itself\n(",[410,3199,3201],{"className":3200},[413],[410,3202,3204,3237],{"className":3203,"ariaHidden":418},[417],[410,3205,3207,3210,3213,3216,3219,3222,3225,3228,3231,3234],{"className":3206},[422],[410,3208],{"className":3209,"style":733},[426],[410,3211,1257],{"className":3212,"style":1256},[431,432],[410,3214,1261],{"className":3215},[431,432],[410,3217,1266],{"className":3218,"style":1265},[431,432],[410,3220,1205],{"className":3221},[737],[410,3223,681],{"className":3224,"style":680},[431,432],[410,3226,1212],{"className":3227},[757],[410,3229],{"className":3230,"style":841},[653],[410,3232,1282],{"className":3233},[845],[410,3235],{"className":3236,"style":841},[653],[410,3238,3240,3243,3246,3249,3252,3255,3258],{"className":3239},[422],[410,3241],{"className":3242,"style":733},[426],[410,3244,1193],{"className":3245},[431,432],[410,3247,1197],{"className":3248},[431,432],[410,3250,1201],{"className":3251},[431,432],[410,3253,1205],{"className":3254},[737],[410,3256,649],{"className":3257},[431,432],[410,3259,1212],{"className":3260},[757],") is enough to save the edge. ",[410,3263,3265],{"className":3264},[413],[410,3266,3268],{"className":3267,"ariaHidden":418},[417],[410,3269,3271,3274],{"className":3270},[422],[410,3272],{"className":3273,"style":1046},[426],[410,3275,3277],{"className":3276},[1050,1051],[410,3278,1056],{"className":3279},[431,1055],[684,3281,3283],{"id":3282},"the-articulation-criterion","The articulation criterion",[381,3285,3286,3287,3290,3291,3306,3307,1217,3310,3325],{},"Cut ",[394,3288,3289],{},"vertices"," need one more case, because removing ",[410,3292,3294],{"className":3293},[413],[410,3295,3297],{"className":3296,"ariaHidden":418},[417],[410,3298,3300,3303],{"className":3299},[422],[410,3301],{"className":3302,"style":676},[426],[410,3304,649],{"className":3305},[431,432]," deletes ",[394,3308,3309],{},"all",[410,3311,3313],{"className":3312},[413],[410,3314,3316],{"className":3315,"ariaHidden":418},[417],[410,3317,3319,3322],{"className":3318},[422],[410,3320],{"className":3321,"style":676},[426],[410,3323,649],{"className":3324},[431,432],"'s\nincident edges at once, including the tree edges to each child.",[399,3327,3328,3333],{"type":2614},[381,3329,3330],{},[405,3331,3332],{},"Theorem (articulation point).",[3334,3335,3336,3397],"ul",{},[3337,3338,3339,3340,3343,3344,3365,3366,3396],"li",{},"The DFS ",[405,3341,3342],{},"root"," is an articulation point ",[410,3345,3347],{"className":3346},[413],[410,3348,3350],{"className":3349,"ariaHidden":418},[417],[410,3351,3353,3356,3359,3362],{"className":3352},[422],[410,3354],{"className":3355,"style":1953},[426],[410,3357],{"className":3358,"style":841},[653],[410,3360,1960],{"className":3361},[845],[410,3363],{"className":3364,"style":841},[653]," it has ",[410,3367,3369],{"className":3368},[413],[410,3370,3372,3386],{"className":3371,"ariaHidden":418},[417],[410,3373,3375,3379,3383],{"className":3374},[422],[410,3376],{"className":3377,"style":3378},[426],"height:0.7719em;vertical-align:-0.136em;",[410,3380,3382],{"className":3381},[845],"≥",[410,3384],{"className":3385,"style":841},[653],[410,3387,3389,3392],{"className":3388},[422],[410,3390],{"className":3391,"style":2186},[426],[410,3393,3395],{"className":3394},[431],"2"," tree children.",[3337,3398,3399,3400,3403,3404,3343,3419,3440,3441,3456,3457,2863,3472,1505],{},"A ",[405,3401,3402],{},"non-root"," vertex ",[410,3405,3407],{"className":3406},[413],[410,3408,3410],{"className":3409,"ariaHidden":418},[417],[410,3411,3413,3416],{"className":3412},[422],[410,3414],{"className":3415,"style":676},[426],[410,3417,649],{"className":3418},[431,432],[410,3420,3422],{"className":3421},[413],[410,3423,3425],{"className":3424,"ariaHidden":418},[417],[410,3426,3428,3431,3434,3437],{"className":3427},[422],[410,3429],{"className":3430,"style":1953},[426],[410,3432],{"className":3433,"style":841},[653],[410,3435,1960],{"className":3436},[845],[410,3438],{"className":3439,"style":841},[653]," ",[410,3442,3444],{"className":3443},[413],[410,3445,3447],{"className":3446,"ariaHidden":418},[417],[410,3448,3450,3453],{"className":3449},[422],[410,3451],{"className":3452,"style":676},[426],[410,3454,649],{"className":3455},[431,432]," has some tree\nchild ",[410,3458,3460],{"className":3459},[413],[410,3461,3463],{"className":3462,"ariaHidden":418},[417],[410,3464,3466,3469],{"className":3465},[422],[410,3467],{"className":3468,"style":676},[426],[410,3470,681],{"className":3471,"style":680},[431,432],[410,3473,3475],{"className":3474},[413],[410,3476,3478,3511],{"className":3477,"ariaHidden":418},[417],[410,3479,3481,3484,3487,3490,3493,3496,3499,3502,3505,3508],{"className":3480},[422],[410,3482],{"className":3483,"style":733},[426],[410,3485,1257],{"className":3486,"style":1256},[431,432],[410,3488,1261],{"className":3489},[431,432],[410,3491,1266],{"className":3492,"style":1265},[431,432],[410,3494,1205],{"className":3495},[737],[410,3497,681],{"className":3498,"style":680},[431,432],[410,3500,1212],{"className":3501},[757],[410,3503],{"className":3504,"style":841},[653],[410,3506,3382],{"className":3507},[845],[410,3509],{"className":3510,"style":841},[653],[410,3512,3514,3517,3520,3523,3526,3529,3532],{"className":3513},[422],[410,3515],{"className":3516,"style":733},[426],[410,3518,1193],{"className":3519},[431,432],[410,3521,1197],{"className":3522},[431,432],[410,3524,1201],{"className":3525},[431,432],[410,3527,1205],{"className":3528},[737],[410,3530,649],{"className":3531},[431,432],[410,3533,1212],{"className":3534},[757],[381,3536,3537,3540],{},[394,3538,3539],{},"Why the root case."," The root has no ancestors, so back edges cannot help. If it\nhas two or more children, those child-subtrees were discovered separately and the\nonly edges joining them ran through the root (cross edges don't exist), so deleting\nthe root splits them. One child means the root is just a leaf-side endpoint and\nremoving it leaves the rest connected.",[381,3542,3543,3546,3547,3562,3563,3578,3579,3594,3595,3610,3611,3440,3614,3629,3630,3694,3695,3758,3759,3774,3775,3790,3791,3806,3807,3822,3823,3838,3839,3902,3903,3440,3906,3936,3937,3940,3941,3944,3959,3960,3975,3976,3992,3993,4008,4009],{},[394,3544,3545],{},"Why the non-root case."," For a non-root ",[410,3548,3550],{"className":3549},[413],[410,3551,3553],{"className":3552,"ariaHidden":418},[417],[410,3554,3556,3559],{"className":3555},[422],[410,3557],{"className":3558,"style":676},[426],[410,3560,649],{"className":3561},[431,432],", deleting ",[410,3564,3566],{"className":3565},[413],[410,3567,3569],{"className":3568,"ariaHidden":418},[417],[410,3570,3572,3575],{"className":3571},[422],[410,3573],{"className":3574,"style":676},[426],[410,3576,649],{"className":3577},[431,432]," severs child ",[410,3580,3582],{"className":3581},[413],[410,3583,3585],{"className":3584,"ariaHidden":418},[417],[410,3586,3588,3591],{"className":3587},[422],[410,3589],{"className":3590,"style":676},[426],[410,3592,681],{"className":3593,"style":680},[431,432],"'s\nsubtree from ",[410,3596,3598],{"className":3597},[413],[410,3599,3601],{"className":3600,"ariaHidden":418},[417],[410,3602,3604,3607],{"className":3603},[422],[410,3605],{"className":3606,"style":676},[426],[410,3608,649],{"className":3609},[431,432],". That subtree stays attached to the rest of the graph only if\nsome back edge climbs ",[394,3612,3613],{},"strictly above",[410,3615,3617],{"className":3616},[413],[410,3618,3620],{"className":3619,"ariaHidden":418},[417],[410,3621,3623,3626],{"className":3622},[422],[410,3624],{"className":3625,"style":676},[426],[410,3627,649],{"className":3628},[431,432],", i.e. ",[410,3631,3633],{"className":3632},[413],[410,3634,3636,3670],{"className":3635,"ariaHidden":418},[417],[410,3637,3639,3642,3645,3648,3651,3654,3657,3660,3663,3667],{"className":3638},[422],[410,3640],{"className":3641,"style":733},[426],[410,3643,1257],{"className":3644,"style":1256},[431,432],[410,3646,1261],{"className":3647},[431,432],[410,3649,1266],{"className":3650,"style":1265},[431,432],[410,3652,1205],{"className":3653},[737],[410,3655,681],{"className":3656,"style":680},[431,432],[410,3658,1212],{"className":3659},[757],[410,3661],{"className":3662,"style":841},[653],[410,3664,3666],{"className":3665},[845],"\u003C",[410,3668],{"className":3669,"style":841},[653],[410,3671,3673,3676,3679,3682,3685,3688,3691],{"className":3672},[422],[410,3674],{"className":3675,"style":733},[426],[410,3677,1193],{"className":3678},[431,432],[410,3680,1197],{"className":3681},[431,432],[410,3683,1201],{"className":3684},[431,432],[410,3686,1205],{"className":3687},[737],[410,3689,649],{"className":3690},[431,432],[410,3692,1212],{"className":3693},[757],". If instead\n",[410,3696,3698],{"className":3697},[413],[410,3699,3701,3734],{"className":3700,"ariaHidden":418},[417],[410,3702,3704,3707,3710,3713,3716,3719,3722,3725,3728,3731],{"className":3703},[422],[410,3705],{"className":3706,"style":733},[426],[410,3708,1257],{"className":3709,"style":1256},[431,432],[410,3711,1261],{"className":3712},[431,432],[410,3714,1266],{"className":3715,"style":1265},[431,432],[410,3717,1205],{"className":3718},[737],[410,3720,681],{"className":3721,"style":680},[431,432],[410,3723,1212],{"className":3724},[757],[410,3726],{"className":3727,"style":841},[653],[410,3729,3382],{"className":3730},[845],[410,3732],{"className":3733,"style":841},[653],[410,3735,3737,3740,3743,3746,3749,3752,3755],{"className":3736},[422],[410,3738],{"className":3739,"style":733},[426],[410,3741,1193],{"className":3742},[431,432],[410,3744,1197],{"className":3745},[431,432],[410,3747,1201],{"className":3748},[431,432],[410,3750,1205],{"className":3751},[737],[410,3753,649],{"className":3754},[431,432],[410,3756,1212],{"className":3757},[757],", every escape from ",[410,3760,3762],{"className":3761},[413],[410,3763,3765],{"className":3764,"ariaHidden":418},[417],[410,3766,3768,3771],{"className":3767},[422],[410,3769],{"className":3770,"style":676},[426],[410,3772,681],{"className":3773,"style":680},[431,432],"'s subtree reaches no higher than ",[410,3776,3778],{"className":3777},[413],[410,3779,3781],{"className":3780,"ariaHidden":418},[417],[410,3782,3784,3787],{"className":3783},[422],[410,3785],{"className":3786,"style":676},[426],[410,3788,649],{"className":3789},[431,432],"\nitself, so removing ",[410,3792,3794],{"className":3793},[413],[410,3795,3797],{"className":3796,"ariaHidden":418},[417],[410,3798,3800,3803],{"className":3799},[422],[410,3801],{"className":3802,"style":676},[426],[410,3804,649],{"className":3805},[431,432]," isolates that subtree and ",[410,3808,3810],{"className":3809},[413],[410,3811,3813],{"className":3812,"ariaHidden":418},[417],[410,3814,3816,3819],{"className":3815},[422],[410,3817],{"className":3818,"style":676},[426],[410,3820,649],{"className":3821},[431,432]," is a cut vertex. The contrast\nwith the bridge test is exactly the boundary case: a back edge to ",[410,3824,3826],{"className":3825},[413],[410,3827,3829],{"className":3828,"ariaHidden":418},[417],[410,3830,3832,3835],{"className":3831},[422],[410,3833],{"className":3834,"style":676},[426],[410,3836,649],{"className":3837},[431,432],"\n(",[410,3840,3842],{"className":3841},[413],[410,3843,3845,3878],{"className":3844,"ariaHidden":418},[417],[410,3846,3848,3851,3854,3857,3860,3863,3866,3869,3872,3875],{"className":3847},[422],[410,3849],{"className":3850,"style":733},[426],[410,3852,1257],{"className":3853,"style":1256},[431,432],[410,3855,1261],{"className":3856},[431,432],[410,3858,1266],{"className":3859,"style":1265},[431,432],[410,3861,1205],{"className":3862},[737],[410,3864,681],{"className":3865,"style":680},[431,432],[410,3867,1212],{"className":3868},[757],[410,3870],{"className":3871,"style":841},[653],[410,3873,1282],{"className":3874},[845],[410,3876],{"className":3877,"style":841},[653],[410,3879,3881,3884,3887,3890,3893,3896,3899],{"className":3880},[422],[410,3882],{"className":3883,"style":733},[426],[410,3885,1193],{"className":3886},[431,432],[410,3888,1197],{"className":3889},[431,432],[410,3891,1201],{"className":3892},[431,432],[410,3894,1205],{"className":3895},[737],[410,3897,649],{"className":3898},[431,432],[410,3900,1212],{"className":3901},[757],") ",[394,3904,3905],{},"saves the edge",[410,3907,3909],{"className":3908},[413],[410,3910,3912],{"className":3911,"ariaHidden":418},[417],[410,3913,3915,3918,3921,3924,3927,3930,3933],{"className":3914},[422],[410,3916],{"className":3917,"style":733},[426],[410,3919,1310],{"className":3920},[737],[410,3922,649],{"className":3923},[431,432],[410,3925,746],{"className":3926},[745],[410,3928],{"className":3929,"style":750},[653],[410,3931,681],{"className":3932,"style":680},[431,432],[410,3934,1501],{"className":3935},[757]," but does ",[405,3938,3939],{},"not"," save the ",[394,3942,3943],{},"vertex",[410,3945,3947],{"className":3946},[413],[410,3948,3950],{"className":3949,"ariaHidden":418},[417],[410,3951,3953,3956],{"className":3952},[422],[410,3954],{"className":3955,"style":676},[426],[410,3957,649],{"className":3958},[431,432],", since deleting ",[410,3961,3963],{"className":3962},[413],[410,3964,3966],{"className":3965,"ariaHidden":418},[417],[410,3967,3969,3972],{"className":3968},[422],[410,3970],{"className":3971,"style":676},[426],[410,3973,649],{"className":3974},[431,432]," destroys that back edge's endpoint too. Hence ",[410,3977,3979],{"className":3978},[413],[410,3980,3982],{"className":3981,"ariaHidden":418},[417],[410,3983,3985,3989],{"className":3984},[422],[410,3986],{"className":3987,"style":3988},[426],"height:0.5782em;vertical-align:-0.0391em;",[410,3990,1997],{"className":3991},[845]," for\nbridges, ",[410,3994,3996],{"className":3995},[413],[410,3997,3999],{"className":3998,"ariaHidden":418},[417],[410,4000,4002,4005],{"className":4001},[422],[410,4003],{"className":4004,"style":3378},[426],[410,4006,3382],{"className":4007},[845]," for cut vertices. ",[410,4010,4012],{"className":4011},[413],[410,4013,4015],{"className":4014,"ariaHidden":418},[417],[410,4016,4018,4021],{"className":4017},[422],[410,4019],{"className":4020,"style":1046},[426],[410,4022,4024],{"className":4023},[1050,1051],[410,4025,1056],{"className":4026},[431,1055],[490,4028,4030,4253],{"className":4029},[493,494],[496,4031,4034],{"xmlns":498,"width":4032,"height":1737,"viewBox":4033},"213.137","-75 -75 159.853 151.509",[503,4035,4036,4039,4046,4049,4056,4059,4066,4069,4076,4079,4083,4086,4173,4194,4214,4233],{"stroke":505,"style":506},[508,4037],{"fill":510,"d":4038},"M-11.143-59.266c0-7.072-5.733-12.804-12.804-12.804S-36.75-66.338-36.75-59.266c0 7.071 5.733 12.803 12.804 12.803s12.804-5.732 12.804-12.803Zm-12.804 0",[503,4040,4042],{"transform":4041},"translate(-3.531 3.075)",[508,4043],{"d":4044,"fill":505,"stroke":505,"className":4045,"style":520},"M-21.086-59.266L-23.459-59.266Q-23.499-59.266-23.530-59.306Q-23.560-59.345-23.560-59.385Q-23.560-59.446-23.527-59.514Q-23.494-59.582-23.433-59.582Q-22.932-59.582-22.703-59.635Q-22.585-59.679-22.506-59.912L-21.284-64.829Q-21.266-64.917-21.266-64.961Q-21.266-65.027-21.293-65.045Q-21.464-65.098-21.996-65.098Q-22.101-65.098-22.101-65.216Q-22.101-65.278-22.068-65.346Q-22.035-65.414-21.974-65.414L-19.205-65.414Q-18.753-65.414-18.276-65.273Q-17.799-65.133-17.472-64.832Q-17.144-64.531-17.144-64.056Q-17.144-63.410-17.746-62.953Q-18.348-62.496-19.078-62.316Q-18.731-62.188-18.509-61.914Q-18.287-61.639-18.287-61.274Q-18.287-61.191-18.296-61.147L-18.366-60.356Q-18.401-59.995-18.401-59.850Q-18.401-59.604-18.331-59.466Q-18.260-59.328-18.032-59.328Q-17.755-59.328-17.542-59.582Q-17.329-59.837-17.250-60.149Q-17.232-60.228-17.153-60.228L-17.070-60.228Q-17.026-60.228-16.995-60.198Q-16.964-60.167-16.964-60.123Q-16.964-60.114-16.973-60.083Q-17.070-59.683-17.366-59.376Q-17.663-59.068-18.045-59.068Q-18.392-59.068-18.682-59.167Q-18.972-59.266-19.155-59.488Q-19.337-59.710-19.337-60.048Q-19.337-60.202-19.293-60.400L-19.095-61.182Q-19.069-61.305-19.069-61.415Q-19.069-61.793-19.337-62.002Q-19.605-62.210-19.988-62.210L-21.148-62.210L-21.732-59.850Q-21.750-59.807-21.750-59.714Q-21.750-59.653-21.723-59.635Q-21.552-59.582-21.020-59.582Q-20.976-59.582-20.950-59.549Q-20.924-59.516-20.924-59.473Q-20.924-59.266-21.086-59.266M-20.510-64.764L-21.086-62.470L-20.058-62.470Q-19.227-62.470-18.700-62.821Q-18.397-63.028-18.221-63.425Q-18.045-63.823-18.045-64.223Q-18.045-65.098-19.403-65.098L-20.040-65.098Q-20.300-65.098-20.374-65.051Q-20.449-65.005-20.510-64.764",[519],[508,4047],{"fill":510,"d":4048},"M-11.143-19.432c0-7.072-5.733-12.804-12.804-12.804S-36.75-26.504-36.75-19.432c0 7.07 5.733 12.803 12.804 12.803s12.804-5.732 12.804-12.803Zm-12.804 0",[503,4050,4052],{"transform":4051},"translate(-3.632 42.909)",[508,4053],{"d":4054,"fill":505,"stroke":505,"className":4055,"style":520},"M-22.580-60.545Q-22.580-60.202-22.446-59.938Q-22.312-59.675-22.062-59.530Q-21.811-59.385-21.464-59.385Q-21.069-59.385-20.691-59.545Q-20.313-59.705-20.003-59.987Q-19.693-60.268-19.487-60.617Q-19.280-60.967-19.188-61.345L-18.375-64.583Q-18.357-64.632-18.357-64.728Q-18.357-64.961-18.548-65.029Q-18.739-65.098-19.025-65.098Q-19.131-65.098-19.131-65.216Q-19.131-65.300-19.091-65.357Q-19.051-65.414-18.968-65.414L-17.061-65.414Q-17.034-65.414-17.012-65.396Q-16.990-65.379-16.977-65.352Q-16.964-65.326-16.964-65.304Q-16.964-65.098-17.087-65.098Q-17.461-65.098-17.716-64.972Q-17.970-64.847-18.072-64.522L-18.880-61.283Q-19.021-60.712-19.410-60.200Q-19.799-59.688-20.352-59.378Q-20.906-59.068-21.490-59.068Q-22-59.068-22.424-59.286Q-22.848-59.503-23.097-59.899Q-23.345-60.294-23.345-60.813Q-23.345-61.059-23.279-61.345L-22.409-64.829Q-22.391-64.917-22.391-64.961Q-22.391-65.027-22.418-65.045Q-22.589-65.098-23.121-65.098Q-23.226-65.098-23.226-65.216Q-23.226-65.300-23.187-65.357Q-23.147-65.414-23.064-65.414L-20.660-65.414Q-20.634-65.414-20.612-65.396Q-20.590-65.379-20.576-65.352Q-20.563-65.326-20.563-65.304Q-20.563-65.225-20.594-65.161Q-20.625-65.098-20.691-65.098Q-21.183-65.098-21.407-65.045Q-21.552-64.992-21.609-64.764L-22.479-61.283Q-22.580-60.813-22.580-60.545",[519],[508,4057],{"fill":510,"d":4058},"M-23.947-46.263v13.827M-11.143 20.401c0-7.071-5.733-12.803-12.804-12.803S-36.75 13.33-36.75 20.4s5.733 12.804 12.804 12.804 12.804-5.732 12.804-12.804Zm-12.804 0",[503,4060,4062],{"transform":4061},"translate(-4.173 82.743)",[508,4063],{"d":4064,"fill":505,"stroke":505,"className":4065,"style":520},"M-21.671-59.266L-23.587-59.266Q-23.626-59.266-23.657-59.306Q-23.688-59.345-23.688-59.385Q-23.688-59.442-23.655-59.512Q-23.622-59.582-23.560-59.582Q-23.156-59.582-22.789-59.752Q-22.422-59.921-22.128-60.220Q-22.119-60.228-22.112-60.231Q-22.106-60.233-22.101-60.237L-20.106-62.333L-21.249-64.926Q-21.341-65.036-21.534-65.067Q-21.728-65.098-21.996-65.098Q-22.101-65.098-22.101-65.216Q-22.101-65.414-21.939-65.414L-19.706-65.414Q-19.684-65.414-19.662-65.399Q-19.640-65.383-19.625-65.355Q-19.610-65.326-19.610-65.304Q-19.610-65.225-19.640-65.161Q-19.671-65.098-19.737-65.098Q-19.908-65.098-20.071-65.043Q-20.234-64.988-20.304-64.865L-19.482-62.993L-17.970-64.583Q-17.957-64.619-17.900-64.693Q-17.843-64.768-17.843-64.856Q-17.843-64.974-17.951-65.036Q-18.058-65.098-18.203-65.098Q-18.304-65.098-18.304-65.216Q-18.304-65.414-18.142-65.414L-16.226-65.414Q-16.186-65.414-16.155-65.374Q-16.125-65.335-16.125-65.304Q-16.125-65.234-16.158-65.166Q-16.191-65.098-16.252-65.098Q-17.061-65.098-17.685-64.460Q-17.685-64.460-17.698-64.456Q-17.711-64.452-17.711-64.443L-19.359-62.711L-18.054-59.754Q-17.948-59.644-17.759-59.613Q-17.571-59.582-17.298-59.582Q-17.254-59.582-17.226-59.549Q-17.197-59.516-17.197-59.473Q-17.197-59.266-17.360-59.266L-19.592-59.266Q-19.689-59.266-19.689-59.385Q-19.689-59.442-19.658-59.512Q-19.627-59.582-19.566-59.582Q-19.394-59.582-19.232-59.635Q-19.069-59.688-18.999-59.815L-19.988-62.057L-21.851-60.092Q-21.864-60.053-21.915-59.980Q-21.965-59.908-21.965-59.824Q-21.965-59.705-21.851-59.644Q-21.737-59.582-21.609-59.582Q-21.565-59.582-21.537-59.549Q-21.508-59.516-21.508-59.473Q-21.508-59.266-21.671-59.266",[519],[508,4067],{"fill":510,"d":4068},"M-23.947-6.429V7.398M-11.143 60.235c0-7.071-5.732-12.803-12.804-12.803-7.071 0-12.804 5.732-12.804 12.803s5.733 12.804 12.804 12.804 12.804-5.732 12.804-12.804Zm-12.804 0",[503,4070,4072],{"transform":4071},"translate(-3.712 122.577)",[508,4073],{"d":4074,"fill":505,"stroke":505,"className":4075,"style":520},"M-23.037-59.385Q-23.037-59.446-23.004-59.514Q-22.971-59.582-22.910-59.582Q-22.409-59.582-22.185-59.635Q-22.123-59.657-22.093-59.697Q-22.062-59.736-22.035-59.796Q-22.009-59.855-21.974-59.934L-21.534-61.723L-22.787-64.917Q-22.910-65.098-23.516-65.098Q-23.622-65.098-23.622-65.216Q-23.622-65.300-23.582-65.357Q-23.543-65.414-23.459-65.414L-21.200-65.414Q-21.178-65.414-21.156-65.399Q-21.134-65.383-21.119-65.355Q-21.104-65.326-21.104-65.304Q-21.104-65.234-21.137-65.166Q-21.170-65.098-21.231-65.098Q-21.851-65.098-21.851-64.900L-20.761-62.127L-18.590-64.575Q-18.586-64.597-18.504-64.706Q-18.423-64.816-18.423-64.917Q-18.423-65.098-18.761-65.098Q-18.863-65.098-18.863-65.216Q-18.863-65.414-18.700-65.414L-16.999-65.414Q-16.964-65.414-16.936-65.379Q-16.907-65.344-16.907-65.304Q-16.907-65.238-16.940-65.168Q-16.973-65.098-17.034-65.098Q-17.738-65.098-18.287-64.487Q-18.287-64.487-18.304-64.471Q-18.322-64.456-18.331-64.443L-20.752-61.723L-21.209-59.877Q-21.214-59.864-21.220-59.837Q-21.227-59.811-21.233-59.776Q-21.240-59.741-21.240-59.714Q-21.240-59.657-21.200-59.635Q-21.029-59.582-20.502-59.582Q-20.458-59.582-20.429-59.549Q-20.401-59.516-20.401-59.473Q-20.401-59.266-20.563-59.266L-22.941-59.266Q-23.037-59.266-23.037-59.385",[519],[508,4077],{"fill":510,"d":4078},"M-23.947 33.405v13.827",[503,4080,4081],{"stroke":597,"style":599},[508,4082],{"fill":510,"d":4048},[508,4084],{"fill":510,"d":4085,"style":1807},"M-33.142 11.206c-5.913-5.913-5.913-15.53 0-21.443",[503,4087,4088,4095,4101,4107,4113,4119,4125,4131,4137,4143,4149,4155,4161,4167],{"fill":597,"stroke":510,"fontSize":1819},[503,4089,4091],{"transform":4090},"translate(43.654 85.223)",[508,4092],{"d":4093,"fill":597,"stroke":597,"className":4094,"style":1827},"M-23.633-67.273L-23.633-68.336Q-23.633-68.360-23.605-68.387Q-23.578-68.414-23.554-68.414L-23.445-68.414Q-23.380-68.414-23.366-68.356Q-23.270-67.922-23.024-67.671Q-22.778-67.420-22.364-67.420Q-22.023-67.420-21.770-67.553Q-21.517-67.686-21.517-67.994Q-21.517-68.151-21.611-68.266Q-21.705-68.380-21.843-68.449Q-21.982-68.517-22.149-68.555L-22.730-68.654Q-23.086-68.722-23.359-68.943Q-23.633-69.163-23.633-69.505Q-23.633-69.754-23.521-69.929Q-23.410-70.103-23.224-70.202Q-23.038-70.301-22.822-70.344Q-22.607-70.387-22.364-70.387Q-21.951-70.387-21.671-70.205L-21.455-70.380Q-21.445-70.383-21.438-70.385Q-21.431-70.387-21.421-70.387L-21.370-70.387Q-21.343-70.387-21.319-70.363Q-21.295-70.339-21.295-70.311L-21.295-69.464Q-21.295-69.443-21.319-69.416Q-21.343-69.389-21.370-69.389L-21.483-69.389Q-21.510-69.389-21.536-69.414Q-21.561-69.440-21.561-69.464Q-21.561-69.700-21.667-69.864Q-21.773-70.028-21.956-70.110Q-22.139-70.192-22.371-70.192Q-22.699-70.192-22.956-70.089Q-23.212-69.987-23.212-69.710Q-23.212-69.515-23.029-69.406Q-22.846-69.296-22.617-69.255L-22.043-69.149Q-21.797-69.101-21.583-68.973Q-21.370-68.845-21.233-68.642Q-21.096-68.438-21.096-68.189Q-21.096-67.676-21.462-67.437Q-21.828-67.198-22.364-67.198Q-22.860-67.198-23.192-67.492L-23.458-67.218Q-23.479-67.198-23.506-67.198L-23.554-67.198Q-23.578-67.198-23.605-67.225Q-23.633-67.252-23.633-67.273M-19.893-68.100L-19.893-69.604Q-19.893-69.874-20.001-69.935Q-20.109-69.997-20.420-69.997L-20.420-70.277L-19.312-70.352L-19.312-68.120L-19.312-68.100Q-19.312-67.820-19.261-67.676Q-19.210-67.533-19.068-67.476Q-18.926-67.420-18.639-67.420Q-18.386-67.420-18.181-67.560Q-17.976-67.700-17.860-67.926Q-17.743-68.151-17.743-68.401L-17.743-69.604Q-17.743-69.874-17.851-69.935Q-17.959-69.997-18.270-69.997L-18.270-70.277L-17.162-70.352L-17.162-67.939Q-17.162-67.748-17.109-67.666Q-17.056-67.584-16.956-67.565Q-16.855-67.546-16.639-67.546L-16.639-67.266L-17.716-67.198L-17.716-67.762Q-17.825-67.580-17.971-67.457Q-18.116-67.334-18.302-67.266Q-18.489-67.198-18.690-67.198Q-19.893-67.198-19.893-68.100M-15.245-67.266L-15.511-67.266L-15.511-71.374Q-15.511-71.644-15.619-71.706Q-15.727-71.767-16.038-71.767L-16.038-72.048L-14.958-72.123L-14.958-69.953Q-14.749-70.144-14.464-70.248Q-14.178-70.352-13.881-70.352Q-13.563-70.352-13.266-70.231Q-12.968-70.110-12.746-69.894Q-12.524-69.679-12.398-69.394Q-12.271-69.108-12.271-68.777Q-12.271-68.332-12.510-67.968Q-12.750-67.604-13.143-67.401Q-13.536-67.198-13.980-67.198Q-14.175-67.198-14.365-67.254Q-14.554-67.310-14.715-67.415Q-14.876-67.519-15.016-67.680L-15.245-67.266M-14.930-69.611L-14.930-67.994Q-14.794-67.734-14.553-67.577Q-14.312-67.420-14.035-67.420Q-13.741-67.420-13.529-67.527Q-13.317-67.635-13.184-67.827Q-13.051-68.018-12.992-68.257Q-12.934-68.496-12.934-68.777Q-12.934-69.136-13.028-69.440Q-13.122-69.744-13.350-69.937Q-13.577-70.130-13.943-70.130Q-14.243-70.130-14.510-69.994Q-14.777-69.857-14.930-69.611M-11.109-68.107L-11.109-70.004L-11.748-70.004L-11.748-70.226Q-11.430-70.226-11.213-70.436Q-10.996-70.646-10.895-70.956Q-10.795-71.265-10.795-71.573L-10.528-71.573L-10.528-70.284L-9.451-70.284L-9.451-70.004L-10.528-70.004L-10.528-68.120Q-10.528-67.844-10.424-67.645Q-10.320-67.447-10.060-67.447Q-9.903-67.447-9.797-67.551Q-9.691-67.656-9.641-67.809Q-9.592-67.963-9.592-68.120L-9.592-68.534L-9.325-68.534L-9.325-68.107Q-9.325-67.881-9.424-67.671Q-9.523-67.461-9.708-67.329Q-9.892-67.198-10.121-67.198Q-10.559-67.198-10.834-67.435Q-11.109-67.673-11.109-68.107M-6.765-67.266L-8.501-67.266L-8.501-67.546Q-8.272-67.546-8.124-67.580Q-7.975-67.615-7.975-67.755L-7.975-69.604Q-7.975-69.874-8.082-69.935Q-8.190-69.997-8.501-69.997L-8.501-70.277L-7.472-70.352L-7.472-69.645Q-7.343-69.953-7.100-70.152Q-6.857-70.352-6.539-70.352Q-6.321-70.352-6.150-70.228Q-5.979-70.103-5.979-69.891Q-5.979-69.754-6.078-69.655Q-6.177-69.556-6.310-69.556Q-6.447-69.556-6.546-69.655Q-6.645-69.754-6.645-69.891Q-6.645-70.031-6.546-70.130Q-6.837-70.130-7.037-69.934Q-7.237-69.737-7.329-69.443Q-7.421-69.149-7.421-68.869L-7.421-67.755Q-7.421-67.546-6.765-67.546L-6.765-67.266M-5.435-68.801Q-5.435-69.122-5.311-69.411Q-5.186-69.700-4.960-69.923Q-4.735-70.147-4.439-70.267Q-4.143-70.387-3.825-70.387Q-3.497-70.387-3.236-70.287Q-2.974-70.188-2.798-70.006Q-2.622-69.823-2.528-69.565Q-2.434-69.307-2.434-68.975Q-2.434-68.883-2.516-68.862L-4.772-68.862L-4.772-68.801Q-4.772-68.213-4.489-67.830Q-4.205-67.447-3.637-67.447Q-3.316-67.447-3.048-67.640Q-2.780-67.833-2.691-68.148Q-2.684-68.189-2.609-68.203L-2.516-68.203Q-2.434-68.179-2.434-68.107Q-2.434-68.100-2.441-68.073Q-2.554-67.676-2.925-67.437Q-3.296-67.198-3.719-67.198Q-4.157-67.198-4.557-67.406Q-4.957-67.615-5.196-67.982Q-5.435-68.349-5.435-68.801M-4.765-69.071L-2.950-69.071Q-2.950-69.348-3.048-69.600Q-3.145-69.853-3.343-70.009Q-3.542-70.164-3.825-70.164Q-4.102-70.164-4.316-70.006Q-4.530-69.847-4.647-69.592Q-4.765-69.337-4.765-69.071M-1.887-68.801Q-1.887-69.122-1.763-69.411Q-1.638-69.700-1.412-69.923Q-1.187-70.147-0.891-70.267Q-0.595-70.387-0.278-70.387Q0.051-70.387 0.312-70.287Q0.574-70.188 0.750-70.006Q0.926-69.823 1.020-69.565Q1.114-69.307 1.114-68.975Q1.114-68.883 1.032-68.862L-1.224-68.862L-1.224-68.801Q-1.224-68.213-0.941-67.830Q-0.657-67.447-0.090-67.447Q0.232-67.447 0.500-67.640Q0.768-67.833 0.857-68.148Q0.864-68.189 0.939-68.203L1.032-68.203Q1.114-68.179 1.114-68.107Q1.114-68.100 1.107-68.073Q0.994-67.676 0.623-67.437Q0.252-67.198-0.172-67.198Q-0.609-67.198-1.009-67.406Q-1.409-67.615-1.648-67.982Q-1.887-68.349-1.887-68.801M-1.218-69.071L0.597-69.071Q0.597-69.348 0.500-69.600Q0.403-69.853 0.204-70.009Q0.006-70.164-0.278-70.164Q-0.554-70.164-0.768-70.006Q-0.982-69.847-1.100-69.592Q-1.218-69.337-1.218-69.071",[519],[503,4096,4097],{"transform":4090},[508,4098],{"d":4099,"fill":597,"stroke":597,"className":4100,"style":1827},"M4.383-68.749Q4.383-69.091 4.518-69.390Q4.653-69.689 4.893-69.913Q5.132-70.137 5.450-70.262Q5.768-70.387 6.099-70.387Q6.544-70.387 6.943-70.171Q7.343-69.956 7.578-69.578Q7.812-69.201 7.812-68.749Q7.812-68.408 7.670-68.124Q7.528-67.840 7.284-67.633Q7.039-67.427 6.730-67.312Q6.421-67.198 6.099-67.198Q5.669-67.198 5.267-67.399Q4.865-67.601 4.624-67.953Q4.383-68.305 4.383-68.749M6.099-67.447Q6.701-67.447 6.925-67.825Q7.149-68.203 7.149-68.835Q7.149-69.447 6.914-69.806Q6.680-70.164 6.099-70.164Q5.047-70.164 5.047-68.835Q5.047-68.203 5.272-67.825Q5.498-67.447 6.099-67.447M10.204-67.266L8.471-67.266L8.471-67.546Q8.697-67.546 8.846-67.580Q8.994-67.615 8.994-67.755L8.994-70.004L8.406-70.004L8.406-70.284L8.994-70.284L8.994-71.101Q8.994-71.419 9.172-71.667Q9.350-71.914 9.640-72.055Q9.931-72.195 10.242-72.195Q10.498-72.195 10.702-72.053Q10.905-71.911 10.905-71.668Q10.905-71.532 10.806-71.433Q10.707-71.333 10.570-71.333Q10.433-71.333 10.334-71.433Q10.235-71.532 10.235-71.668Q10.235-71.849 10.375-71.942Q10.297-71.969 10.197-71.969Q9.989-71.969 9.835-71.836Q9.681-71.703 9.601-71.499Q9.521-71.296 9.521-71.087L9.521-70.284L10.409-70.284L10.409-70.004L9.548-70.004L9.548-67.755Q9.548-67.546 10.204-67.546",[519],[503,4102,4103],{"transform":4090},[508,4104],{"d":4105,"fill":597,"stroke":597,"className":4106,"style":1827},"M15.266-67.266L13.697-67.266Q13.666-67.266 13.639-67.302Q13.612-67.338 13.612-67.379L13.643-67.492Q13.670-67.536 13.725-67.546Q14.046-67.546 14.340-67.669Q14.634-67.792 14.859-68.015Q14.863-68.018 14.880-68.026Q14.897-68.035 14.900-68.042L16.531-69.652L15.540-71.641Q15.457-71.726 15.302-71.747Q15.146-71.767 14.935-71.767Q14.846-71.791 14.846-71.880L14.873-71.990Q14.900-72.037 14.958-72.048L16.784-72.048Q16.814-72.048 16.842-72.012Q16.869-71.976 16.869-71.942L16.838-71.829Q16.811-71.778 16.756-71.767Q16.633-71.767 16.509-71.730Q16.384-71.692 16.336-71.614L17.057-70.178L18.288-71.395Q18.298-71.426 18.346-71.484Q18.394-71.542 18.394-71.607Q18.394-71.689 18.313-71.728Q18.233-71.767 18.127-71.767Q18.045-71.795 18.045-71.880L18.072-71.990Q18.100-72.037 18.147-72.048L19.716-72.048Q19.750-72.048 19.780-72.012Q19.809-71.976 19.809-71.942L19.781-71.829Q19.740-71.774 19.696-71.767Q19.368-71.767 19.081-71.648Q18.793-71.528 18.561-71.299Q18.554-71.292 18.539-71.286Q18.523-71.279 18.520-71.268L17.177-69.939L18.312-67.673Q18.397-67.587 18.552-67.567Q18.708-67.546 18.920-67.546Q19.002-67.519 19.002-67.440L18.975-67.328Q18.947-67.276 18.899-67.266L17.064-67.266Q17.037-67.266 17.008-67.302Q16.978-67.338 16.978-67.379L17.009-67.492Q17.037-67.536 17.091-67.546Q17.201-67.546 17.337-67.584Q17.474-67.621 17.512-67.700L16.650-69.423L15.133-67.915Q15.129-67.898 15.078-67.837Q15.027-67.775 15.027-67.707Q15.027-67.625 15.112-67.586Q15.198-67.546 15.287-67.546Q15.375-67.522 15.375-67.440L15.348-67.328Q15.314-67.273 15.266-67.266",[519],[503,4108,4109],{"transform":4090},[508,4110],{"d":4111,"fill":597,"stroke":597,"className":4112,"style":1827},"M21.086-67.686Q21.086-67.854 21.209-67.977Q21.332-68.100 21.507-68.100Q21.674-68.100 21.797-67.977Q21.920-67.854 21.920-67.686Q21.920-67.512 21.797-67.389Q21.674-67.266 21.507-67.266Q21.332-67.266 21.209-67.389Q21.086-67.512 21.086-67.686M21.086-69.870Q21.086-70.038 21.209-70.161Q21.332-70.284 21.507-70.284Q21.674-70.284 21.797-70.161Q21.920-70.038 21.920-69.870Q21.920-69.696 21.797-69.573Q21.674-69.450 21.507-69.450Q21.332-69.450 21.209-69.573Q21.086-69.696 21.086-69.870",[519],[503,4114,4115],{"transform":4090},[508,4116],{"d":4117,"fill":597,"stroke":597,"className":4118,"style":1827},"M-23.520-59.854Q-23.520-59.946-23.499-60.028L-22.638-63.487Q-22.604-63.590-22.604-63.675Q-22.604-63.767-23.038-63.767Q-23.120-63.795-23.120-63.880L-23.093-63.990Q-23.086-64.031-23.017-64.048L-22.036-64.123Q-21.999-64.123-21.965-64.096Q-21.930-64.068-21.930-64.020L-22.939-59.994Q-22.966-59.837-22.966-59.748Q-22.966-59.621-22.915-59.521Q-22.864-59.420-22.744-59.420Q-22.621-59.420-22.529-59.514Q-22.436-59.608-22.385-59.733Q-22.334-59.857-22.284-60.033Q-22.235-60.209-22.218-60.295Q-22.194-60.356-22.142-60.356L-22.030-60.356Q-21.995-60.356-21.973-60.327Q-21.951-60.298-21.951-60.274Q-21.951-60.261-21.958-60.247Q-22.064-59.820-22.247-59.509Q-22.429-59.198-22.758-59.198Q-23.065-59.198-23.292-59.379Q-23.520-59.560-23.520-59.854",[519],[503,4120,4121],{"transform":4090},[508,4122],{"d":4123,"fill":597,"stroke":597,"className":4124,"style":1827},"M-20.957-60.421Q-20.957-60.917-20.659-61.366Q-20.362-61.816-19.890-62.084Q-19.419-62.352-18.926-62.352Q-18.660-62.352-18.429-62.269Q-18.198-62.185-18.021-62.021Q-17.843-61.857-17.744-61.630Q-17.645-61.402-17.645-61.129Q-17.645-60.633-17.942-60.184Q-18.239-59.734-18.709-59.466Q-19.179-59.198-19.668-59.198Q-20.023-59.198-20.321-59.351Q-20.618-59.505-20.787-59.784Q-20.957-60.062-20.957-60.421M-19.654-59.420Q-19.330-59.420-19.063-59.604Q-18.796-59.789-18.615-60.088Q-18.434-60.387-18.342-60.734Q-18.250-61.081-18.250-61.378Q-18.250-61.710-18.432-61.920Q-18.615-62.130-18.940-62.130Q-19.272-62.130-19.536-61.946Q-19.801-61.761-19.981-61.460Q-20.160-61.160-20.254-60.814Q-20.348-60.469-20.348-60.168Q-20.348-59.847-20.160-59.633Q-19.972-59.420-19.654-59.420M-16.441-60.127Q-16.441-60.274-16.402-60.459Q-16.363-60.643-16.312-60.797Q-16.260-60.951-16.171-61.175Q-16.083-61.399-16.021-61.556Q-15.946-61.758-15.946-61.898Q-15.946-61.997-15.985-62.064Q-16.024-62.130-16.113-62.130Q-16.394-62.130-16.583-61.859Q-16.773-61.587-16.862-61.255Q-16.872-61.190-16.934-61.190L-17.043-61.190Q-17.074-61.190-17.098-61.221Q-17.122-61.252-17.122-61.276L-17.122-61.303Q-17.053-61.563-16.913-61.800Q-16.773-62.038-16.563-62.195Q-16.353-62.352-16.100-62.352Q-15.919-62.352-15.763-62.281Q-15.607-62.209-15.510-62.074Q-15.413-61.939-15.413-61.758Q-15.413-61.641-15.460-61.505Q-15.679-60.961-15.783-60.654Q-15.888-60.346-15.888-60.042Q-15.888-59.755-15.720-59.587Q-15.553-59.420-15.259-59.420Q-14.856-59.420-14.616-59.980Q-14.616-60.021-14.618-60.050Q-14.620-60.079-14.623-60.114Q-14.623-60.271-14.565-60.503L-14.189-62.024Q-14.151-62.144-14.063-62.214Q-13.974-62.284-13.857-62.284Q-13.758-62.284-13.687-62.221Q-13.615-62.158-13.615-62.058Q-13.615-62.031-13.628-61.976L-14.004-60.455Q-14.069-60.213-14.069-60.021Q-14.069-59.745-13.922-59.582Q-13.775-59.420-13.502-59.420Q-13.280-59.420-13.109-59.550Q-12.938-59.680-12.815-59.880Q-12.692-60.079-12.606-60.295Q-12.360-60.913-12.360-61.204Q-12.360-61.409-12.422-61.503Q-12.483-61.597-12.612-61.735Q-12.740-61.874-12.740-61.970Q-12.740-62.069-12.682-62.158Q-12.624-62.246-12.533-62.303Q-12.442-62.359-12.340-62.359Q-12.148-62.359-12.063-62.187Q-11.978-62.014-11.978-61.799Q-11.978-61.525-12.089-61.079Q-12.200-60.633-12.333-60.295Q-12.463-59.987-12.618-59.751Q-12.774-59.516-13-59.357Q-13.225-59.198-13.509-59.198Q-13.840-59.198-14.112-59.304Q-14.384-59.410-14.517-59.659Q-14.828-59.198-15.273-59.198Q-15.778-59.198-16.110-59.420Q-16.441-59.642-16.441-60.127",[519],[503,4126,4127],{"transform":4090},[508,4128],{"d":4129,"fill":597,"stroke":597,"className":4130,"style":1827},"M-9.427-57.516L-10.503-57.516L-10.503-64.516L-9.427-64.516L-9.427-64.174L-10.162-64.174L-10.162-57.858L-9.427-57.858",[519],[503,4132,4133],{"transform":4090},[508,4134],{"d":4135,"fill":597,"stroke":597,"className":4136,"style":1827},"M-7.197-59.266L-8.766-59.266Q-8.797-59.266-8.824-59.302Q-8.851-59.338-8.851-59.379L-8.820-59.492Q-8.793-59.536-8.738-59.546Q-8.417-59.546-8.123-59.669Q-7.829-59.792-7.604-60.015Q-7.600-60.018-7.583-60.026Q-7.566-60.035-7.563-60.042L-5.932-61.652L-6.923-63.641Q-7.005-63.726-7.161-63.747Q-7.317-63.767-7.528-63.767Q-7.617-63.791-7.617-63.880L-7.590-63.990Q-7.563-64.037-7.505-64.048L-5.679-64.048Q-5.649-64.048-5.621-64.012Q-5.594-63.976-5.594-63.942L-5.625-63.829Q-5.652-63.778-5.707-63.767Q-5.830-63.767-5.954-63.730Q-6.079-63.692-6.127-63.614L-5.406-62.178L-4.175-63.395Q-4.165-63.426-4.117-63.484Q-4.069-63.542-4.069-63.607Q-4.069-63.689-4.150-63.728Q-4.230-63.767-4.336-63.767Q-4.418-63.795-4.418-63.880L-4.391-63.990Q-4.363-64.037-4.316-64.048L-2.747-64.048Q-2.713-64.048-2.683-64.012Q-2.654-63.976-2.654-63.942L-2.682-63.829Q-2.723-63.774-2.767-63.767Q-3.095-63.767-3.382-63.648Q-3.670-63.528-3.902-63.299Q-3.909-63.292-3.924-63.286Q-3.940-63.279-3.943-63.268L-5.286-61.939L-4.151-59.673Q-4.066-59.587-3.911-59.567Q-3.755-59.546-3.543-59.546Q-3.461-59.519-3.461-59.440L-3.488-59.328Q-3.516-59.276-3.564-59.266L-5.399-59.266Q-5.426-59.266-5.455-59.302Q-5.485-59.338-5.485-59.379L-5.454-59.492Q-5.426-59.536-5.372-59.546Q-5.262-59.546-5.126-59.584Q-4.989-59.621-4.951-59.700L-5.813-61.423L-7.330-59.915Q-7.334-59.898-7.385-59.837Q-7.436-59.775-7.436-59.707Q-7.436-59.625-7.351-59.586Q-7.265-59.546-7.176-59.546Q-7.088-59.522-7.088-59.440L-7.115-59.328Q-7.149-59.273-7.197-59.266",[519],[503,4138,4139],{"transform":4090},[508,4140],{"d":4141,"fill":597,"stroke":597,"className":4142,"style":1827},"M-0.789-57.516L-1.865-57.516L-1.865-57.858L-1.131-57.858L-1.131-64.174L-1.865-64.174L-1.865-64.516L-0.789-64.516",[519],[503,4144,4145],{"transform":4090},[508,4146],{"d":4147,"fill":597,"stroke":597,"className":4148,"style":1827},"M7.931-60.073L3.098-60.073Q3.030-60.083 2.984-60.129Q2.938-60.175 2.938-60.247Q2.938-60.312 2.984-60.358Q3.030-60.404 3.098-60.414L7.931-60.414Q8-60.404 8.046-60.358Q8.092-60.312 8.092-60.247Q8.092-60.175 8.046-60.129Q8-60.083 7.931-60.073M7.931-61.611L3.098-61.611Q3.030-61.621 2.984-61.667Q2.938-61.713 2.938-61.785Q2.938-61.929 3.098-61.953L7.931-61.953Q8.092-61.929 8.092-61.785Q8.092-61.713 8.046-61.667Q8-61.621 7.931-61.611",[519],[503,4150,4151],{"transform":4090},[508,4152],{"d":4153,"fill":597,"stroke":597,"className":4154,"style":1827},"M12.355-59.198Q12.031-59.198 11.786-59.355Q11.542-59.512 11.410-59.777Q11.279-60.042 11.279-60.367Q11.279-60.835 11.532-61.298Q11.784-61.761 12.208-62.057Q12.632-62.352 13.104-62.352Q13.319-62.352 13.505-62.248Q13.692-62.144 13.811-61.959L14.191-63.487Q14.225-63.590 14.225-63.675Q14.225-63.767 13.791-63.767Q13.705-63.795 13.705-63.880L13.736-63.990Q13.763-64.037 13.811-64.048L14.792-64.123Q14.830-64.123 14.864-64.096Q14.898-64.068 14.898-64.020L13.890-59.994Q13.863-59.837 13.863-59.748Q13.863-59.621 13.914-59.521Q13.965-59.420 14.085-59.420Q14.307-59.420 14.420-59.673Q14.532-59.926 14.618-60.295Q14.642-60.356 14.693-60.356L14.806-60.356Q14.840-60.356 14.862-60.327Q14.885-60.298 14.885-60.274Q14.885-60.261 14.878-60.247Q14.615-59.198 14.071-59.198Q13.822-59.198 13.613-59.321Q13.405-59.444 13.336-59.673Q12.861-59.198 12.355-59.198M12.369-59.420Q12.642-59.420 12.894-59.604Q13.145-59.789 13.336-60.056L13.705-61.536Q13.668-61.696 13.587-61.833Q13.507-61.970 13.381-62.050Q13.254-62.130 13.090-62.130Q12.882-62.130 12.695-62.006Q12.509-61.881 12.371-61.689Q12.232-61.498 12.147-61.296Q12.034-61.002 11.950-60.657Q11.866-60.312 11.866-60.062Q11.866-59.806 11.995-59.613Q12.123-59.420 12.369-59.420M15.794-59.792Q15.794-59.939 15.845-60.042L16.433-61.556Q16.508-61.758 16.508-61.898Q16.508-62.130 16.347-62.130Q16.067-62.130 15.877-61.859Q15.688-61.587 15.599-61.255Q15.589-61.190 15.527-61.190L15.418-61.190Q15.387-61.190 15.363-61.221Q15.339-61.252 15.339-61.276L15.339-61.303Q15.407-61.563 15.548-61.800Q15.688-62.038 15.898-62.195Q16.108-62.352 16.361-62.352Q16.542-62.352 16.696-62.281Q16.850-62.209 16.946-62.072Q17.041-61.935 17.041-61.758Q17.041-61.611 16.990-61.505L16.402-59.994Q16.327-59.827 16.327-59.652Q16.327-59.420 16.488-59.420Q16.764-59.420 16.958-59.697Q17.151-59.974 17.229-60.295Q17.253-60.356 17.308-60.356L17.417-60.356Q17.451-60.356 17.474-60.331Q17.496-60.305 17.496-60.274Q17.496-60.261 17.489-60.247Q17.428-59.997 17.287-59.756Q17.147-59.516 16.937-59.357Q16.727-59.198 16.474-59.198Q16.197-59.198 15.995-59.360Q15.794-59.522 15.794-59.792M16.607-63.508Q16.607-63.662 16.735-63.785Q16.864-63.908 17.021-63.908Q17.134-63.908 17.217-63.827Q17.301-63.747 17.301-63.627Q17.301-63.470 17.173-63.349Q17.045-63.227 16.887-63.227Q16.775-63.227 16.691-63.308Q16.607-63.388 16.607-63.508M18.685-59.686Q18.877-59.420 19.482-59.420Q19.711-59.420 19.955-59.490Q20.199-59.560 20.362-59.715Q20.524-59.871 20.524-60.114Q20.524-60.288 20.374-60.396Q20.223-60.503 20.029-60.541L19.574-60.623Q19.304-60.678 19.116-60.866Q18.928-61.054 18.928-61.310Q18.928-61.635 19.114-61.872Q19.301-62.110 19.598-62.231Q19.895-62.352 20.217-62.352Q20.422-62.352 20.637-62.293Q20.852-62.233 20.994-62.098Q21.136-61.963 21.136-61.751Q21.136-61.583 21.042-61.457Q20.948-61.330 20.784-61.330Q20.685-61.330 20.611-61.395Q20.538-61.460 20.538-61.563Q20.538-61.683 20.622-61.780Q20.705-61.877 20.818-61.898Q20.661-62.130 20.203-62.130Q19.906-62.130 19.656-61.987Q19.407-61.843 19.407-61.563Q19.407-61.307 19.769-61.224L20.230-61.142Q20.545-61.081 20.774-60.872Q21.003-60.664 21.003-60.356Q21.003-60.093 20.847-59.842Q20.692-59.591 20.456-59.440Q20.063-59.198 19.475-59.198Q19.048-59.198 18.697-59.353Q18.347-59.509 18.347-59.874Q18.347-60.069 18.463-60.213Q18.579-60.356 18.774-60.356Q18.894-60.356 18.974-60.285Q19.054-60.213 19.054-60.093Q19.054-59.936 18.948-59.820Q18.843-59.703 18.685-59.686M22.654-60.168Q22.654-59.844 22.842-59.632Q23.030-59.420 23.347-59.420Q23.799-59.420 24.209-59.586Q24.619-59.751 24.886-60.086Q24.903-60.114 24.950-60.114Q24.998-60.114 25.044-60.064Q25.091-60.015 25.091-59.967Q25.091-59.936 25.070-59.909Q24.780-59.543 24.318-59.370Q23.857-59.198 23.334-59.198Q22.982-59.198 22.684-59.351Q22.387-59.505 22.216-59.786Q22.045-60.066 22.045-60.421Q22.045-60.797 22.218-61.149Q22.390-61.501 22.691-61.775Q22.992-62.048 23.349-62.200Q23.706-62.352 24.082-62.352Q24.284-62.352 24.499-62.293Q24.715-62.233 24.856-62.098Q24.998-61.963 24.998-61.751Q24.998-61.563 24.884-61.423Q24.769-61.283 24.578-61.283Q24.462-61.283 24.380-61.356Q24.298-61.430 24.298-61.549Q24.298-61.696 24.397-61.809Q24.496-61.922 24.643-61.953Q24.455-62.130 24.069-62.130Q23.734-62.130 23.469-61.944Q23.204-61.758 23.023-61.460Q22.842-61.163 22.748-60.816Q22.654-60.469 22.654-60.168",[519],[503,4156,4157],{"transform":4090},[508,4158],{"d":4159,"fill":597,"stroke":597,"className":4160,"style":1827},"M27.235-57.516L26.159-57.516L26.159-64.516L27.235-64.516L27.235-64.174L26.500-64.174L26.500-57.858L27.235-57.858",[519],[503,4162,4163],{"transform":4090},[508,4164],{"d":4165,"fill":597,"stroke":597,"className":4166,"style":1827},"M28.744-60.308Q28.744-60.032 28.862-59.827Q28.980-59.621 29.200-59.514Q29.421-59.406 29.694-59.406Q30.121-59.406 30.508-59.606Q30.894-59.806 31.171-60.148Q31.448-60.490 31.550-60.896L32.165-63.374Q32.186-63.436 32.186-63.494Q32.186-63.668 32.037-63.718Q31.888-63.767 31.663-63.767Q31.571-63.791 31.571-63.880L31.598-63.990Q31.605-64.031 31.683-64.048L33.232-64.048Q33.266-64.048 33.290-64.015Q33.314-63.983 33.314-63.942L33.286-63.829Q33.280-63.785 33.208-63.767Q32.558-63.767 32.439-63.327L31.817-60.821Q31.731-60.476 31.519-60.163Q31.307-59.850 31.020-59.623Q30.733-59.396 30.379-59.261Q30.026-59.126 29.674-59.126Q29.257-59.126 28.894-59.290Q28.532-59.454 28.315-59.765Q28.098-60.076 28.098-60.503Q28.098-60.695 28.142-60.869L28.812-63.573Q28.819-63.590 28.824-63.619Q28.829-63.648 28.833-63.668Q28.833-63.723 28.778-63.740Q28.645-63.767 28.259-63.767Q28.170-63.791 28.170-63.880L28.197-63.990Q28.204-64.034 28.282-64.048L30.227-64.048Q30.261-64.048 30.285-64.015Q30.309-63.983 30.309-63.942L30.282-63.829Q30.275-63.785 30.207-63.767Q29.800-63.767 29.653-63.733Q29.533-63.699 29.486-63.521L28.819-60.849Q28.744-60.565 28.744-60.308",[519],[503,4168,4169],{"transform":4090},[508,4170],{"d":4171,"fill":597,"stroke":597,"className":4172,"style":1827},"M34.969-57.516L33.893-57.516L33.893-57.858L34.627-57.858L34.627-64.174L33.893-64.174L33.893-64.516L34.969-64.516",[519],[503,4174,4175,4182,4188],{"stroke":510,"fontSize":1819},[503,4176,4178],{"transform":4177},"translate(-34.887 1.75)",[508,4179],{"d":4180,"fill":505,"stroke":505,"className":4181,"style":1827},"M-20.621-59.266L-23.151-59.266L-23.151-59.546Q-22.183-59.546-22.183-59.755L-22.183-63.374Q-22.576-63.186-23.198-63.186L-23.198-63.467Q-22.781-63.467-22.417-63.568Q-22.053-63.668-21.797-63.914L-21.671-63.914Q-21.606-63.897-21.589-63.829L-21.589-59.755Q-21.589-59.546-20.621-59.546",[519],[503,4183,4184],{"transform":4177},[508,4185],{"d":4186,"fill":505,"stroke":505,"className":4187,"style":1827},"M-19.414-57.683Q-19.414-57.701-19.400-57.748L-16.748-64.410Q-16.693-64.516-16.587-64.516Q-16.519-64.516-16.470-64.466Q-16.420-64.417-16.420-64.349Q-16.420-64.325-16.422-64.313Q-16.423-64.301-16.427-64.284L-19.079-57.622Q-19.148-57.516-19.240-57.516Q-19.312-57.516-19.363-57.567Q-19.414-57.619-19.414-57.683",[519],[503,4189,4190],{"transform":4177},[508,4191],{"d":4192,"fill":505,"stroke":505,"className":4193,"style":1827},"M-12.538-59.266L-15.068-59.266L-15.068-59.546Q-14.100-59.546-14.100-59.755L-14.100-63.374Q-14.493-63.186-15.115-63.186L-15.115-63.467Q-14.698-63.467-14.334-63.568Q-13.970-63.668-13.714-63.914L-13.588-63.914Q-13.523-63.897-13.506-63.829L-13.506-59.755Q-13.506-59.546-12.538-59.546",[519],[503,4195,4196,4203,4208],{"fill":597,"stroke":510,"fontSize":1819},[503,4197,4199],{"transform":4198},"translate(-34.887 41.584)",[508,4200],{"d":4201,"fill":597,"stroke":597,"className":4202,"style":1827},"M-20.621-59.266L-23.506-59.266L-23.506-59.468Q-23.506-59.498-23.479-59.526L-22.231-60.743Q-22.159-60.818-22.117-60.860Q-22.074-60.903-21.995-60.982Q-21.582-61.395-21.351-61.753Q-21.120-62.110-21.120-62.534Q-21.120-62.766-21.199-62.969Q-21.278-63.173-21.419-63.323Q-21.561-63.474-21.756-63.554Q-21.951-63.634-22.183-63.634Q-22.494-63.634-22.752-63.475Q-23.010-63.316-23.140-63.039L-23.120-63.039Q-22.952-63.039-22.845-62.928Q-22.737-62.817-22.737-62.653Q-22.737-62.496-22.846-62.383Q-22.956-62.270-23.120-62.270Q-23.280-62.270-23.393-62.383Q-23.506-62.496-23.506-62.653Q-23.506-63.029-23.298-63.316Q-23.089-63.603-22.754-63.759Q-22.419-63.914-22.064-63.914Q-21.640-63.914-21.260-63.756Q-20.881-63.597-20.647-63.280Q-20.413-62.964-20.413-62.534Q-20.413-62.223-20.553-61.954Q-20.693-61.686-20.898-61.481Q-21.103-61.276-21.466-60.994Q-21.828-60.712-21.937-60.616L-22.792-59.888L-22.149-59.888Q-21.886-59.888-21.597-59.890Q-21.308-59.891-21.090-59.900Q-20.871-59.909-20.854-59.926Q-20.792-59.991-20.755-60.158Q-20.717-60.326-20.679-60.568L-20.413-60.568",[519],[503,4204,4205],{"transform":4198},[508,4206],{"d":4186,"fill":597,"stroke":597,"className":4207,"style":1827},[519],[503,4209,4210],{"transform":4198},[508,4211],{"d":4212,"fill":597,"stroke":597,"className":4213,"style":1827},"M-12.538-59.266L-15.423-59.266L-15.423-59.468Q-15.423-59.498-15.396-59.526L-14.148-60.743Q-14.076-60.818-14.034-60.860Q-13.991-60.903-13.912-60.982Q-13.499-61.395-13.268-61.753Q-13.037-62.110-13.037-62.534Q-13.037-62.766-13.116-62.969Q-13.195-63.173-13.336-63.323Q-13.478-63.474-13.673-63.554Q-13.868-63.634-14.100-63.634Q-14.411-63.634-14.669-63.475Q-14.927-63.316-15.057-63.039L-15.037-63.039Q-14.869-63.039-14.762-62.928Q-14.654-62.817-14.654-62.653Q-14.654-62.496-14.763-62.383Q-14.873-62.270-15.037-62.270Q-15.197-62.270-15.310-62.383Q-15.423-62.496-15.423-62.653Q-15.423-63.029-15.215-63.316Q-15.006-63.603-14.671-63.759Q-14.336-63.914-13.981-63.914Q-13.557-63.914-13.177-63.756Q-12.798-63.597-12.564-63.280Q-12.330-62.964-12.330-62.534Q-12.330-62.223-12.470-61.954Q-12.610-61.686-12.815-61.481Q-13.020-61.276-13.383-60.994Q-13.745-60.712-13.854-60.616L-14.709-59.888L-14.066-59.888Q-13.803-59.888-13.514-59.890Q-13.225-59.891-13.007-59.900Q-12.788-59.909-12.771-59.926Q-12.709-59.991-12.672-60.158Q-12.634-60.326-12.596-60.568L-12.330-60.568",[519],[503,4215,4216,4223,4228],{"stroke":510,"fontSize":1819},[503,4217,4219],{"transform":4218},"translate(-34.887 81.418)",[508,4220],{"d":4221,"fill":505,"stroke":505,"className":4222,"style":1827},"M-23.151-59.813Q-23.031-59.656-22.840-59.557Q-22.648-59.457-22.433-59.418Q-22.218-59.379-21.995-59.379Q-21.698-59.379-21.503-59.534Q-21.308-59.690-21.218-59.944Q-21.127-60.199-21.127-60.483Q-21.127-60.777-21.219-61.028Q-21.312-61.279-21.510-61.435Q-21.708-61.590-22.002-61.590L-22.518-61.590Q-22.546-61.590-22.571-61.616Q-22.597-61.641-22.597-61.665L-22.597-61.737Q-22.597-61.768-22.571-61.790Q-22.546-61.812-22.518-61.812L-22.077-61.843Q-21.715-61.843-21.495-62.200Q-21.274-62.558-21.274-62.947Q-21.274-63.275-21.469-63.479Q-21.664-63.682-21.995-63.682Q-22.282-63.682-22.535-63.598Q-22.788-63.515-22.952-63.327Q-22.805-63.327-22.705-63.212Q-22.604-63.098-22.604-62.947Q-22.604-62.797-22.710-62.687Q-22.816-62.578-22.973-62.578Q-23.134-62.578-23.243-62.687Q-23.352-62.797-23.352-62.947Q-23.352-63.272-23.144-63.491Q-22.935-63.709-22.619-63.812Q-22.303-63.914-21.995-63.914Q-21.677-63.914-21.349-63.810Q-21.021-63.706-20.794-63.484Q-20.567-63.262-20.567-62.947Q-20.567-62.513-20.854-62.188Q-21.141-61.864-21.575-61.717Q-21.264-61.652-20.984-61.486Q-20.703-61.320-20.526-61.062Q-20.348-60.804-20.348-60.483Q-20.348-60.073-20.592-59.763Q-20.837-59.454-21.218-59.290Q-21.599-59.126-21.995-59.126Q-22.364-59.126-22.722-59.239Q-23.079-59.351-23.323-59.601Q-23.568-59.850-23.568-60.220Q-23.568-60.391-23.451-60.503Q-23.335-60.616-23.164-60.616Q-23.055-60.616-22.964-60.565Q-22.874-60.514-22.819-60.421Q-22.764-60.329-22.764-60.220Q-22.764-60.052-22.877-59.933Q-22.990-59.813-23.151-59.813",[519],[503,4224,4225],{"transform":4218},[508,4226],{"d":4186,"fill":505,"stroke":505,"className":4227,"style":1827},[519],[503,4229,4230],{"transform":4218},[508,4231],{"d":4212,"fill":505,"stroke":505,"className":4232,"style":1827},[519],[503,4234,4235,4242,4247],{"stroke":510,"fontSize":1819},[503,4236,4238],{"transform":4237},"translate(-34.887 121.252)",[508,4239],{"d":4240,"fill":505,"stroke":505,"className":4241,"style":1827},"M-21.630-60.414L-23.674-60.414L-23.674-60.695L-21.343-63.867Q-21.308-63.914-21.243-63.914L-21.107-63.914Q-21.062-63.914-21.035-63.887Q-21.008-63.860-21.008-63.815L-21.008-60.695L-20.245-60.695L-20.245-60.414L-21.008-60.414L-21.008-59.755Q-21.008-59.546-20.252-59.546L-20.252-59.266L-22.385-59.266L-22.385-59.546Q-21.630-59.546-21.630-59.755L-21.630-60.414M-21.582-63.139L-23.373-60.695L-21.582-60.695",[519],[503,4243,4244],{"transform":4237},[508,4245],{"d":4186,"fill":505,"stroke":505,"className":4246,"style":1827},[519],[503,4248,4249],{"transform":4237},[508,4250],{"d":4251,"fill":505,"stroke":505,"className":4252,"style":1827},"M-13.547-60.414L-15.591-60.414L-15.591-60.695L-13.260-63.867Q-13.225-63.914-13.160-63.914L-13.024-63.914Q-12.979-63.914-12.952-63.887Q-12.925-63.860-12.925-63.815L-12.925-60.695L-12.162-60.695L-12.162-60.414L-12.925-60.414L-12.925-59.755Q-12.925-59.546-12.169-59.546L-12.169-59.266L-14.302-59.266L-14.302-59.546Q-13.547-59.546-13.547-59.755L-13.547-60.414M-13.499-63.139L-15.290-60.695L-13.499-60.695",[519],[628,4254,4256,4257,4348,4349,4376],{"className":4255},[631],"cut vertex ",[410,4258,4260],{"className":4259},[413],[410,4261,4263,4281,4324],{"className":4262,"ariaHidden":418},[417],[410,4264,4266,4269,4272,4275,4278],{"className":4265},[422],[410,4267],{"className":4268,"style":1953},[426],[410,4270],{"className":4271,"style":841},[653],[410,4273,1960],{"className":4274},[845],[410,4276],{"className":4277,"style":841},[653],[410,4279],{"className":4280,"style":841},[653],[410,4282,4284,4287,4290,4293,4296,4299,4302,4306,4309,4312,4315,4318,4321],{"className":4283},[422],[410,4285],{"className":4286,"style":733},[426],[410,4288,1257],{"className":4289,"style":1256},[431,432],[410,4291,1261],{"className":4292},[431,432],[410,4294,1266],{"className":4295,"style":1265},[431,432],[410,4297,1205],{"className":4298},[737],[410,4300,1370],{"className":4301},[431,432],[410,4303,4305],{"className":4304},[431,432],"hi",[410,4307,1257],{"className":4308,"style":1256},[431,432],[410,4310,1193],{"className":4311},[431,432],[410,4313,1212],{"className":4314},[757],[410,4316],{"className":4317,"style":841},[653],[410,4319,3382],{"className":4320},[845],[410,4322],{"className":4323,"style":841},[653],[410,4325,4327,4330,4333,4336,4339,4342,4345],{"className":4326},[422],[410,4328],{"className":4329,"style":733},[426],[410,4331,1193],{"className":4332},[431,432],[410,4334,1197],{"className":4335},[431,432],[410,4337,1201],{"className":4338},[431,432],[410,4340,1205],{"className":4341},[737],[410,4343,649],{"className":4344},[431,432],[410,4346,1212],{"className":4347},[757]," (or root with ",[410,4350,4352],{"className":4351},[413],[410,4353,4355,4367],{"className":4354,"ariaHidden":418},[417],[410,4356,4358,4361,4364],{"className":4357},[422],[410,4359],{"className":4360,"style":3378},[426],[410,4362,3382],{"className":4363},[845],[410,4365],{"className":4366,"style":841},[653],[410,4368,4370,4373],{"className":4369},[422],[410,4371],{"className":4372,"style":2186},[426],[410,4374,3395],{"className":4375},[431]," children)",[381,4378,4379,4380,4423,4424,4505,4506,4521,4522,4537,4538,4601,4602,4620,4621,707,4636,4652,4653,4670,4671,3440,4674,4713,4714,4716,4717,4780],{},"Here the back edge ",[410,4381,4383],{"className":4382},[413],[410,4384,4386,4412],{"className":4385,"ariaHidden":418},[417],[410,4387,4389,4392,4397,4400,4403,4406,4409],{"className":4388},[422],[410,4390],{"className":4391,"style":427},[426],[410,4393,4396],{"className":4394,"style":4395},[431,432],"margin-right:0.0785em;","X",[410,4398],{"className":4399,"style":654},[653],[410,4401],{"className":4402,"style":841},[653],[410,4404,846],{"className":4405},[845],[410,4407],{"className":4408,"style":654},[653],[410,4410],{"className":4411,"style":841},[653],[410,4413,4415,4418],{"className":4414},[422],[410,4416],{"className":4417,"style":427},[426],[410,4419,4422],{"className":4420,"style":4421},[431,432],"margin-right:0.109em;","U"," gives ",[410,4425,4427],{"className":4426},[413],[410,4428,4430,4463,4496],{"className":4429,"ariaHidden":418},[417],[410,4431,4433,4436,4439,4442,4445,4448,4451,4454,4457,4460],{"className":4432},[422],[410,4434],{"className":4435,"style":733},[426],[410,4437,1257],{"className":4438,"style":1256},[431,432],[410,4440,1261],{"className":4441},[431,432],[410,4443,1266],{"className":4444,"style":1265},[431,432],[410,4446,1205],{"className":4447},[737],[410,4449,4396],{"className":4450,"style":4395},[431,432],[410,4452,1212],{"className":4453},[757],[410,4455],{"className":4456,"style":841},[653],[410,4458,1282],{"className":4459},[845],[410,4461],{"className":4462,"style":841},[653],[410,4464,4466,4469,4472,4475,4478,4481,4484,4487,4490,4493],{"className":4465},[422],[410,4467],{"className":4468,"style":733},[426],[410,4470,1193],{"className":4471},[431,432],[410,4473,1197],{"className":4474},[431,432],[410,4476,1201],{"className":4477},[431,432],[410,4479,1205],{"className":4480},[737],[410,4482,4422],{"className":4483,"style":4421},[431,432],[410,4485,1212],{"className":4486},[757],[410,4488],{"className":4489,"style":841},[653],[410,4491,1282],{"className":4492},[845],[410,4494],{"className":4495,"style":841},[653],[410,4497,4499,4502],{"className":4498},[422],[410,4500],{"className":4501,"style":2186},[426],[410,4503,3395],{"className":4504},[431],". The subtree of ",[410,4507,4509],{"className":4508},[413],[410,4510,4512],{"className":4511,"ariaHidden":418},[417],[410,4513,4515,4518],{"className":4514},[422],[410,4516],{"className":4517,"style":427},[426],[410,4519,4396],{"className":4520,"style":4395},[431,432]," can\nclimb to ",[410,4523,4525],{"className":4524},[413],[410,4526,4528],{"className":4527,"ariaHidden":418},[417],[410,4529,4531,4534],{"className":4530},[422],[410,4532],{"className":4533,"style":427},[426],[410,4535,4422],{"className":4536,"style":4421},[431,432]," but no higher, so ",[410,4539,4541],{"className":4540},[413],[410,4542,4544,4577],{"className":4543,"ariaHidden":418},[417],[410,4545,4547,4550,4553,4556,4559,4562,4565,4568,4571,4574],{"className":4546},[422],[410,4548],{"className":4549,"style":733},[426],[410,4551,1257],{"className":4552,"style":1256},[431,432],[410,4554,1261],{"className":4555},[431,432],[410,4557,1266],{"className":4558,"style":1265},[431,432],[410,4560,1205],{"className":4561},[737],[410,4563,4396],{"className":4564,"style":4395},[431,432],[410,4566,1212],{"className":4567},[757],[410,4569],{"className":4570,"style":841},[653],[410,4572,3382],{"className":4573},[845],[410,4575],{"className":4576,"style":841},[653],[410,4578,4580,4583,4586,4589,4592,4595,4598],{"className":4579},[422],[410,4581],{"className":4582,"style":733},[426],[410,4584,1193],{"className":4585},[431,432],[410,4587,1197],{"className":4588},[431,432],[410,4590,1201],{"className":4591},[431,432],[410,4593,1205],{"className":4594},[737],[410,4596,4422],{"className":4597,"style":4421},[431,432],[410,4599,1212],{"className":4600},[757]," holds and ",[405,4603,4604,4619],{},[410,4605,4607],{"className":4606},[413],[410,4608,4610],{"className":4609,"ariaHidden":418},[417],[410,4611,4613,4616],{"className":4612},[422],[410,4614],{"className":4615,"style":427},[426],[410,4617,4422],{"className":4618,"style":4421},[431,432]," is a cut\nvertex",": deleting it strands ",[410,4622,4624],{"className":4623},[413],[410,4625,4627],{"className":4626,"ariaHidden":418},[417],[410,4628,4630,4633],{"className":4629},[422],[410,4631],{"className":4632,"style":427},[426],[410,4634,4396],{"className":4635,"style":4395},[431,432],[410,4637,4639],{"className":4638},[413],[410,4640,4642],{"className":4641,"ariaHidden":418},[417],[410,4643,4645,4648],{"className":4644},[422],[410,4646],{"className":4647,"style":427},[426],[410,4649,4651],{"className":4650,"style":658},[431,432],"Y"," from ",[410,4654,4656],{"className":4655},[413],[410,4657,4659],{"className":4658,"ariaHidden":418},[417],[410,4660,4662,4665],{"className":4661},[422],[410,4663],{"className":4664,"style":427},[426],[410,4666,4669],{"className":4667,"style":4668},[431,432],"margin-right:0.0077em;","R",". Yet the ",[394,4672,4673],{},"edge",[410,4675,4677],{"className":4676},[413],[410,4678,4680,4704],{"className":4679,"ariaHidden":418},[417],[410,4681,4683,4686,4689,4692,4695,4698,4701],{"className":4682},[422],[410,4684],{"className":4685,"style":2234},[426],[410,4687,4422],{"className":4688,"style":4421},[431,432],[410,4690],{"className":4691,"style":654},[653],[410,4693],{"className":4694,"style":658},[653],[410,4696,663],{"className":4697},[662],[410,4699],{"className":4700,"style":654},[653],[410,4702],{"className":4703,"style":658},[653],[410,4705,4707,4710],{"className":4706},[422],[410,4708],{"className":4709,"style":427},[426],[410,4711,4396],{"className":4712,"style":4395},[431,432]," is\n",[405,4715,3939],{}," a bridge, since ",[410,4718,4720],{"className":4719},[413],[410,4721,4723,4756],{"className":4722,"ariaHidden":418},[417],[410,4724,4726,4729,4732,4735,4738,4741,4744,4747,4750,4753],{"className":4725},[422],[410,4727],{"className":4728,"style":733},[426],[410,4730,1257],{"className":4731,"style":1256},[431,432],[410,4733,1261],{"className":4734},[431,432],[410,4736,1266],{"className":4737,"style":1265},[431,432],[410,4739,1205],{"className":4740},[737],[410,4742,4396],{"className":4743,"style":4395},[431,432],[410,4745,1212],{"className":4746},[757],[410,4748],{"className":4749,"style":841},[653],[410,4751,1282],{"className":4752},[845],[410,4754],{"className":4755,"style":841},[653],[410,4757,4759,4762,4765,4768,4771,4774,4777],{"className":4758},[422],[410,4760],{"className":4761,"style":733},[426],[410,4763,1193],{"className":4764},[431,432],[410,4766,1197],{"className":4767},[431,432],[410,4769,1201],{"className":4770},[431,432],[410,4772,1205],{"className":4773},[737],[410,4775,4422],{"className":4776,"style":4421},[431,432],[410,4778,1212],{"className":4779},[757]," is not strictly greater. The same\nlocal data, two thresholds apart, distinguishes fragile edges from fragile\nvertices.",[684,4782,4784],{"id":4783},"one-dfs-finds-them-all","One DFS finds them all",[381,4786,4787,4788,707,4809,4830,4831,4834,4835,4856,4857,4859,4860,4863,4864,4879,4880,4883,4884,4905,4906,4909],{},"Both criteria read off ",[410,4789,4791],{"className":4790},[413],[410,4792,4794],{"className":4793,"ariaHidden":418},[417],[410,4795,4797,4800,4803,4806],{"className":4796},[422],[410,4798],{"className":4799,"style":1699},[426],[410,4801,1193],{"className":4802},[431,432],[410,4804,1197],{"className":4805},[431,432],[410,4807,1201],{"className":4808},[431,432],[410,4810,4812],{"className":4811},[413],[410,4813,4815],{"className":4814,"ariaHidden":418},[417],[410,4816,4818,4821,4824,4827],{"className":4817},[422],[410,4819],{"className":4820,"style":1699},[426],[410,4822,1257],{"className":4823,"style":1256},[431,432],[410,4825,1261],{"className":4826},[431,432],[410,4828,1266],{"className":4829,"style":1265},[431,432],", so a single recursion computes\neverything. The one subtlety is the ",[405,4832,4833],{},"parent edge",": in an undirected graph the\nedge back to the parent must not be mistaken for a back edge that lowers ",[410,4836,4838],{"className":4837},[413],[410,4839,4841],{"className":4840,"ariaHidden":418},[417],[410,4842,4844,4847,4850,4853],{"className":4843},[422],[410,4845],{"className":4846,"style":1699},[426],[410,4848,1257],{"className":4849,"style":1256},[431,432],[410,4851,1261],{"className":4852},[431,432],[410,4854,1266],{"className":4855,"style":1265},[431,432],".\nGuarding by parent ",[394,4858,3943],{}," is correct only when there are no ",[405,4861,4862],{},"multi-edges"," (two\ndistinct edges between the same pair); with multi-edges, a second ",[410,4865,4867],{"className":4866},[413],[410,4868,4870],{"className":4869,"ariaHidden":418},[417],[410,4871,4873,4876],{"className":4872},[422],[410,4874],{"className":4875,"style":676},[426],[410,4877,649],{"className":4878},[431,432],"–parent edge\n",[394,4881,4882],{},"is"," a genuine back edge and the second copy must be allowed to lower ",[410,4885,4887],{"className":4886},[413],[410,4888,4890],{"className":4889,"ariaHidden":418},[417],[410,4891,4893,4896,4899,4902],{"className":4892},[422],[410,4894],{"className":4895,"style":1699},[426],[410,4897,1257],{"className":4898,"style":1256},[431,432],[410,4900,1261],{"className":4901},[431,432],[410,4903,1266],{"className":4904,"style":1265},[431,432],". The\nreliable fix is to track the parent ",[405,4907,4908],{},"edge id"," rather than the parent vertex.",[4911,4912,4916],"pre",{"className":4913,"code":4914,"language":4915,"meta":376,"style":376},"language-algorithm shiki shiki-themes Vesper Light - Orange Boost (Quick Open Adjusted) vesper","caption: $\\textsc{Bridges-AP}(G)$ — find all bridges and articulation points in $O(V+E)$\n$timer \\gets 0$;\\ \\ $disc[\\,\\cdot\\,] \\gets 0$ (0 = unvisited)\nfor each vertex $s$ in $V$ do\n  if $disc[s] = 0$ then $\\textsc{Dfs}(s,\\ \\text{nil})$  \u002F\u002F nil = no parent edge\n\nprocedure $\\textsc{Dfs}(u,\\ pe)$:   \u002F\u002F $pe$ = id of edge to parent\n  $timer \\gets timer + 1$\n  $disc[u] \\gets low[u] \\gets timer$\n  $children \\gets 0$\n  for each incident edge $e = \\{u,w\\}$ do\n    if $e = pe$ then continue            \u002F\u002F skip arrival edge\n    if $disc[w] = 0$ then                \u002F\u002F tree edge\n      $children \\gets children + 1$\n      $\\textsc{Dfs}(w,\\ e)$\n      $low[u] \\gets \\min(low[u],\\ low[w])$\n      if $low[w] > disc[u]$ then report bridge $\\{u,w\\}$\n      if $pe \\ne \\text{nil}$ and $low[w] \\ge disc[u]$ then mark $u$ articulation\n    else                                 \u002F\u002F back edge\n      $low[u] \\gets \\min(low[u],\\ disc[w])$\n  if $pe = \\text{nil}$ and $children \\ge 2$ then mark $u$ articulation\n","algorithm",[4917,4918,4919,4925,4930,4935,4940,4946,4951,4956,4961,4966,4971,4976,4981,4987,4993,4999,5005,5011,5017,5023],"code",{"__ignoreMap":376},[410,4920,4922],{"class":4921,"line":6},"line",[410,4923,4924],{},"caption: $\\textsc{Bridges-AP}(G)$ — find all bridges and articulation points in $O(V+E)$\n",[410,4926,4927],{"class":4921,"line":18},[410,4928,4929],{},"$timer \\gets 0$;\\ \\ $disc[\\,\\cdot\\,] \\gets 0$ (0 = unvisited)\n",[410,4931,4932],{"class":4921,"line":24},[410,4933,4934],{},"for each vertex $s$ in $V$ do\n",[410,4936,4937],{"class":4921,"line":73},[410,4938,4939],{},"  if $disc[s] = 0$ then $\\textsc{Dfs}(s,\\ \\text{nil})$  \u002F\u002F nil = no parent edge\n",[410,4941,4942],{"class":4921,"line":102},[410,4943,4945],{"emptyLinePlaceholder":4944},true,"\n",[410,4947,4948],{"class":4921,"line":108},[410,4949,4950],{},"procedure $\\textsc{Dfs}(u,\\ pe)$:   \u002F\u002F $pe$ = id of edge to parent\n",[410,4952,4953],{"class":4921,"line":116},[410,4954,4955],{},"  $timer \\gets timer + 1$\n",[410,4957,4958],{"class":4921,"line":196},[410,4959,4960],{},"  $disc[u] \\gets low[u] \\gets timer$\n",[410,4962,4963],{"class":4921,"line":202},[410,4964,4965],{},"  $children \\gets 0$\n",[410,4967,4968],{"class":4921,"line":283},[410,4969,4970],{},"  for each incident edge $e = \\{u,w\\}$ do\n",[410,4972,4973],{"class":4921,"line":333},[410,4974,4975],{},"    if $e = pe$ then continue            \u002F\u002F skip arrival edge\n",[410,4977,4978],{"class":4921,"line":354},[410,4979,4980],{},"    if $disc[w] = 0$ then                \u002F\u002F tree edge\n",[410,4982,4984],{"class":4921,"line":4983},13,[410,4985,4986],{},"      $children \\gets children + 1$\n",[410,4988,4990],{"class":4921,"line":4989},14,[410,4991,4992],{},"      $\\textsc{Dfs}(w,\\ e)$\n",[410,4994,4996],{"class":4921,"line":4995},15,[410,4997,4998],{},"      $low[u] \\gets \\min(low[u],\\ low[w])$\n",[410,5000,5002],{"class":4921,"line":5001},16,[410,5003,5004],{},"      if $low[w] > disc[u]$ then report bridge $\\{u,w\\}$\n",[410,5006,5008],{"class":4921,"line":5007},17,[410,5009,5010],{},"      if $pe \\ne \\text{nil}$ and $low[w] \\ge disc[u]$ then mark $u$ articulation\n",[410,5012,5014],{"class":4921,"line":5013},18,[410,5015,5016],{},"    else                                 \u002F\u002F back edge\n",[410,5018,5020],{"class":4921,"line":5019},19,[410,5021,5022],{},"      $low[u] \\gets \\min(low[u],\\ disc[w])$\n",[410,5024,5026],{"class":4921,"line":5025},20,[410,5027,5028],{},"  if $pe = \\text{nil}$ and $children \\ge 2$ then mark $u$ articulation\n",[381,5030,5031,5032,2262,5077,5080,5081,5097,5098,5101,5102,5132,5133,5196,5197,5204],{},"Each vertex is discovered once and each edge is examined a constant number of\ntimes (twice over the whole run, once from each endpoint), so the search is\n",[410,5033,5035],{"className":5034},[413],[410,5036,5038,5065],{"className":5037,"ariaHidden":418},[417],[410,5039,5041,5044,5048,5051,5055,5058,5062],{"className":5040},[422],[410,5042],{"className":5043,"style":733},[426],[410,5045,5047],{"className":5046},[431],"Θ",[410,5049,1310],{"className":5050},[737],[410,5052,5054],{"className":5053,"style":658},[431,432],"V",[410,5056],{"className":5057,"style":658},[653],[410,5059,5061],{"className":5060},[662],"+",[410,5063],{"className":5064,"style":658},[653],[410,5066,5068,5071,5074],{"className":5067},[422],[410,5069],{"className":5070,"style":733},[426],[410,5072,2532],{"className":5073,"style":2531},[431,432],[410,5075,1501],{"className":5076},[757],[385,5078,5079],{"href":17},"asymptotically"," free\non top of the DFS we were already running. The\nouter loop over ",[410,5082,5084],{"className":5083},[413],[410,5085,5087],{"className":5086,"ariaHidden":418},[417],[410,5088,5090,5093],{"className":5089},[422],[410,5091],{"className":5092,"style":676},[426],[410,5094,5096],{"className":5095},[431,432],"s"," makes it work on disconnected graphs as well: it finds the\nbridges and cut vertices of every component. The same low-link bookkeeping, with a\nstack of edges, also peels off the ",[405,5099,5100],{},"biconnected components"," directly (pop the\nstack down to ",[410,5103,5105],{"className":5104},[413],[410,5106,5108],{"className":5107,"ariaHidden":418},[417],[410,5109,5111,5114,5117,5120,5123,5126,5129],{"className":5110},[422],[410,5112],{"className":5113,"style":733},[426],[410,5115,1310],{"className":5116},[737],[410,5118,649],{"className":5119},[431,432],[410,5121,746],{"className":5122},[745],[410,5124],{"className":5125,"style":750},[653],[410,5127,681],{"className":5128,"style":680},[431,432],[410,5130,1501],{"className":5131},[757]," whenever ",[410,5134,5136],{"className":5135},[413],[410,5137,5139,5172],{"className":5138,"ariaHidden":418},[417],[410,5140,5142,5145,5148,5151,5154,5157,5160,5163,5166,5169],{"className":5141},[422],[410,5143],{"className":5144,"style":733},[426],[410,5146,1257],{"className":5147,"style":1256},[431,432],[410,5149,1261],{"className":5150},[431,432],[410,5152,1266],{"className":5153,"style":1265},[431,432],[410,5155,1205],{"className":5156},[737],[410,5158,681],{"className":5159,"style":680},[431,432],[410,5161,1212],{"className":5162},[757],[410,5164],{"className":5165,"style":841},[653],[410,5167,3382],{"className":5168},[845],[410,5170],{"className":5171,"style":841},[653],[410,5173,5175,5178,5181,5184,5187,5190,5193],{"className":5174},[422],[410,5176],{"className":5177,"style":733},[426],[410,5179,1193],{"className":5180},[431,432],[410,5182,1197],{"className":5183},[431,432],[410,5185,1201],{"className":5186},[431,432],[410,5188,1205],{"className":5189},[737],[410,5191,649],{"className":5192},[431,432],[410,5194,1212],{"className":5195},[757],"), which is Tarjan's original\nformulation.",[466,5198,5199],{},[385,5200,3395],{"href":5201,"ariaDescribedBy":5202,"dataFootnoteRef":376,"id":5203},"#user-content-fn-clrs-dfs",[472],"user-content-fnref-clrs-dfs",[466,5205,5206],{},[385,5207,5211],{"href":5208,"ariaDescribedBy":5209,"dataFootnoteRef":376,"id":5210},"#user-content-fn-erickson-dfs",[472],"user-content-fnref-erickson-dfs","3",[399,5213,5215],{"type":5214},"note",[381,5216,5217,3440,5220,5250,5251,5254,5255,5258,5259,5274,5275,5277,5278,5293,5294,5309,5310,5325,5326,5341],{},[405,5218,5219],{},"Intuition.",[410,5221,5223],{"className":5222},[413],[410,5224,5226],{"className":5225,"ariaHidden":418},[417],[410,5227,5229,5232,5235,5238,5241,5244,5247],{"className":5228},[422],[410,5230],{"className":5231,"style":733},[426],[410,5233,1257],{"className":5234,"style":1256},[431,432],[410,5236,1261],{"className":5237},[431,432],[410,5239,1266],{"className":5240,"style":1265},[431,432],[410,5242,1205],{"className":5243},[737],[410,5245,649],{"className":5246},[431,432],[410,5248,1212],{"className":5249},[757]," is ",[481,5252,5253],{},"the highest rung of the ancestor ladder my subtree can grab."," A ",[394,5256,5257],{},"tree edge"," is a bridge when the child cannot grab any rung above\nits parent (",[410,5260,5262],{"className":5261},[413],[410,5263,5265],{"className":5264,"ariaHidden":418},[417],[410,5266,5268,5271],{"className":5267},[422],[410,5269],{"className":5270,"style":3988},[426],[410,5272,1997],{"className":5273},[845],"); a ",[394,5276,3943],{}," is a cut vertex when some child cannot grab any\nrung strictly above ",[410,5279,5281],{"className":5280},[413],[410,5282,5284],{"className":5283,"ariaHidden":418},[417],[410,5285,5287,5290],{"className":5286},[422],[410,5288],{"className":5289,"style":676},[426],[410,5291,649],{"className":5292},[431,432]," (",[410,5295,5297],{"className":5296},[413],[410,5298,5300],{"className":5299,"ariaHidden":418},[417],[410,5301,5303,5306],{"className":5302},[422],[410,5304],{"className":5305,"style":3378},[426],[410,5307,3382],{"className":5308},[845],", because deleting ",[410,5311,5313],{"className":5312},[413],[410,5314,5316],{"className":5315,"ariaHidden":418},[417],[410,5317,5319,5322],{"className":5318},[422],[410,5320],{"className":5321,"style":676},[426],[410,5323,649],{"className":5324},[431,432]," also kicks away the rung at\n",[410,5327,5329],{"className":5328},[413],[410,5330,5332],{"className":5331,"ariaHidden":418},[417],[410,5333,5335,5338],{"className":5334},[422],[410,5336],{"className":5337,"style":676},[426],[410,5339,649],{"className":5340},[431,432],"). One ladder, two thresholds.",[684,5343,5345],{"id":5344},"takeaways","Takeaways",[3334,5347,5348,5365,5377,5459,5764],{},[3337,5349,3399,5350,5352,5353,5355,5356,707,5359,5362,5363,1505],{},[405,5351,437],{}," (cut edge) and an ",[405,5354,445],{}," (cut vertex) are the\nsingle points of failure of a network: removing one increases the component\ncount. Their absence is ",[405,5357,5358],{},"2-edge-connectivity",[405,5360,5361],{},"2-vertex-connectivity","\n(biconnectivity); cut edges and vertices are the seams between ",[405,5364,478],{},[3337,5366,5367,5368,5371,5372,707,5374,5376],{},"DFS on an ",[405,5369,5370],{},"undirected"," graph produces only ",[405,5373,706],{},[405,5375,710],{},",\nwith no cross or forward edges, so the only way out of a subtree is a back edge to\nan ancestor.",[3337,5378,5379,5380,3440,5382,1539,5412,5427,5428,5458],{},"The ",[405,5381,1236],{},[410,5383,5385],{"className":5384},[413],[410,5386,5388],{"className":5387,"ariaHidden":418},[417],[410,5389,5391,5394,5397,5400,5403,5406,5409],{"className":5390},[422],[410,5392],{"className":5393,"style":733},[426],[410,5395,1257],{"className":5396,"style":1256},[431,432],[410,5398,1261],{"className":5399},[431,432],[410,5401,1266],{"className":5402,"style":1265},[431,432],[410,5404,1205],{"className":5405},[737],[410,5407,649],{"className":5408},[431,432],[410,5410,1212],{"className":5411},[757],[410,5413,5415],{"className":5414},[413],[410,5416,5418],{"className":5417,"ariaHidden":418},[417],[410,5419,5421,5424],{"className":5420},[422],[410,5422],{"className":5423,"style":676},[426],[410,5425,649],{"className":5426},[431,432],"'s\nsubtree via tree edges plus at most one back edge; compute it alongside ",[410,5429,5431],{"className":5430},[413],[410,5432,5434],{"className":5433,"ariaHidden":418},[417],[410,5435,5437,5440,5443,5446,5449,5452,5455],{"className":5436},[422],[410,5438],{"className":5439,"style":733},[426],[410,5441,1193],{"className":5442},[431,432],[410,5444,1197],{"className":5445},[431,432],[410,5447,1201],{"className":5448},[431,432],[410,5450,1205],{"className":5451},[737],[410,5453,649],{"className":5454},[431,432],[410,5456,1212],{"className":5457},[757],"\nin one recursion.",[3337,5460,5461,5464,5465,2697,5495,5576,5577,5580,5581,5596,5597,5618,5619,5682,5683,3365,5704,5731,5732,5747,5748,5763],{},[405,5462,5463],{},"Bridge criterion:"," tree edge ",[410,5466,5468],{"className":5467},[413],[410,5469,5471],{"className":5470,"ariaHidden":418},[417],[410,5472,5474,5477,5480,5483,5486,5489,5492],{"className":5473},[422],[410,5475],{"className":5476,"style":733},[426],[410,5478,1310],{"className":5479},[737],[410,5481,649],{"className":5482},[431,432],[410,5484,746],{"className":5485},[745],[410,5487],{"className":5488,"style":750},[653],[410,5490,681],{"className":5491,"style":680},[431,432],[410,5493,1501],{"className":5494},[757],[410,5496,5498],{"className":5497},[413],[410,5499,5501,5519,5552],{"className":5500,"ariaHidden":418},[417],[410,5502,5504,5507,5510,5513,5516],{"className":5503},[422],[410,5505],{"className":5506,"style":1953},[426],[410,5508],{"className":5509,"style":841},[653],[410,5511,1960],{"className":5512},[845],[410,5514],{"className":5515,"style":841},[653],[410,5517],{"className":5518,"style":841},[653],[410,5520,5522,5525,5528,5531,5534,5537,5540,5543,5546,5549],{"className":5521},[422],[410,5523],{"className":5524,"style":733},[426],[410,5526,1257],{"className":5527,"style":1256},[431,432],[410,5529,1261],{"className":5530},[431,432],[410,5532,1266],{"className":5533,"style":1265},[431,432],[410,5535,1205],{"className":5536},[737],[410,5538,681],{"className":5539,"style":680},[431,432],[410,5541,1212],{"className":5542},[757],[410,5544],{"className":5545,"style":841},[653],[410,5547,1997],{"className":5548},[845],[410,5550],{"className":5551,"style":841},[653],[410,5553,5555,5558,5561,5564,5567,5570,5573],{"className":5554},[422],[410,5556],{"className":5557,"style":733},[426],[410,5559,1193],{"className":5560},[431,432],[410,5562,1197],{"className":5563},[431,432],[410,5565,1201],{"className":5566},[431,432],[410,5568,1205],{"className":5569},[737],[410,5571,649],{"className":5572},[431,432],[410,5574,1212],{"className":5575},[757],".\n",[405,5578,5579],{},"Articulation criterion:"," a non-root ",[410,5582,5584],{"className":5583},[413],[410,5585,5587],{"className":5586,"ariaHidden":418},[417],[410,5588,5590,5593],{"className":5589},[422],[410,5591],{"className":5592,"style":676},[426],[410,5594,649],{"className":5595},[431,432]," is a cut vertex ",[410,5598,5600],{"className":5599},[413],[410,5601,5603],{"className":5602,"ariaHidden":418},[417],[410,5604,5606,5609,5612,5615],{"className":5605},[422],[410,5607],{"className":5608,"style":1953},[426],[410,5610],{"className":5611,"style":841},[653],[410,5613,1960],{"className":5614},[845],[410,5616],{"className":5617,"style":841},[653]," some child has\n",[410,5620,5622],{"className":5621},[413],[410,5623,5625,5658],{"className":5624,"ariaHidden":418},[417],[410,5626,5628,5631,5634,5637,5640,5643,5646,5649,5652,5655],{"className":5627},[422],[410,5629],{"className":5630,"style":733},[426],[410,5632,1257],{"className":5633,"style":1256},[431,432],[410,5635,1261],{"className":5636},[431,432],[410,5638,1266],{"className":5639,"style":1265},[431,432],[410,5641,1205],{"className":5642},[737],[410,5644,681],{"className":5645,"style":680},[431,432],[410,5647,1212],{"className":5648},[757],[410,5650],{"className":5651,"style":841},[653],[410,5653,3382],{"className":5654},[845],[410,5656],{"className":5657,"style":841},[653],[410,5659,5661,5664,5667,5670,5673,5676,5679],{"className":5660},[422],[410,5662],{"className":5663,"style":733},[426],[410,5665,1193],{"className":5666},[431,432],[410,5668,1197],{"className":5669},[431,432],[410,5671,1201],{"className":5672},[431,432],[410,5674,1205],{"className":5675},[737],[410,5677,649],{"className":5678},[431,432],[410,5680,1212],{"className":5681},[757],"; the root is a cut vertex ",[410,5684,5686],{"className":5685},[413],[410,5687,5689],{"className":5688,"ariaHidden":418},[417],[410,5690,5692,5695,5698,5701],{"className":5691},[422],[410,5693],{"className":5694,"style":1953},[426],[410,5696],{"className":5697,"style":841},[653],[410,5699,1960],{"className":5700},[845],[410,5702],{"className":5703,"style":841},[653],[410,5705,5707],{"className":5706},[413],[410,5708,5710,5722],{"className":5709,"ariaHidden":418},[417],[410,5711,5713,5716,5719],{"className":5712},[422],[410,5714],{"className":5715,"style":3378},[426],[410,5717,3382],{"className":5718},[845],[410,5720],{"className":5721,"style":841},[653],[410,5723,5725,5728],{"className":5724},[422],[410,5726],{"className":5727,"style":2186},[426],[410,5729,3395],{"className":5730},[431]," children.\nThe strict-vs-nonstrict gap (",[410,5733,5735],{"className":5734},[413],[410,5736,5738],{"className":5737,"ariaHidden":418},[417],[410,5739,5741,5744],{"className":5740},[422],[410,5742],{"className":5743,"style":3988},[426],[410,5745,1997],{"className":5746},[845]," vs ",[410,5749,5751],{"className":5750},[413],[410,5752,5754],{"className":5753,"ariaHidden":418},[417],[410,5755,5757,5760],{"className":5756},[422],[410,5758],{"className":5759,"style":3378},[426],[410,5761,3382],{"className":5762},[845],") is the whole distinction.",[3337,5765,5766,5767,5810,5811,5814,5815,1505],{},"A single ",[410,5768,5770],{"className":5769},[413],[410,5771,5773,5798],{"className":5772,"ariaHidden":418},[417],[410,5774,5776,5779,5783,5786,5789,5792,5795],{"className":5775},[422],[410,5777],{"className":5778,"style":733},[426],[410,5780,5782],{"className":5781,"style":2318},[431,432],"O",[410,5784,1310],{"className":5785},[737],[410,5787,5054],{"className":5788,"style":658},[431,432],[410,5790],{"className":5791,"style":658},[653],[410,5793,5061],{"className":5794},[662],[410,5796],{"className":5797,"style":658},[653],[410,5799,5801,5804,5807],{"className":5800},[422],[410,5802],{"className":5803,"style":733},[426],[410,5805,2532],{"className":5806,"style":2531},[431,432],[410,5808,1501],{"className":5809},[757]," DFS reports all bridges and cut vertices (and biconnected\ncomponents). Guard the ",[405,5812,5813],{},"parent edge by id",", not the parent vertex, to stay\ncorrect under ",[405,5816,4862],{},[5818,5819,5822,5827],"section",{"className":5820,"dataFootnotes":376},[5821],"footnotes",[684,5823,5826],{"className":5824,"id":472},[5825],"sr-only","Footnotes",[5828,5829,5830,5844,5856],"ol",{},[3337,5831,5833,5836,5837],{"id":5832},"user-content-fn-skiena-conn",[405,5834,5835],{},"Skiena",", § — Graph Traversal \u002F Connectivity: edge- and vertex-connectivity, and articulation vertices as the weak points found by DFS low-links. ",[385,5838,5843],{"href":5839,"ariaLabel":5840,"className":5841,"dataFootnoteBackref":376},"#user-content-fnref-skiena-conn","Back to reference 1",[5842],"data-footnote-backref","↩",[3337,5845,5847,5850,5851],{"id":5846},"user-content-fn-clrs-dfs",[405,5848,5849],{},"CLRS",", Ch. 20 — Elementary Graph Algorithms (DFS): an undirected DFS yields only tree and back edges; the parenthesis\u002Fwhite-path structure that grounds the low-link argument. ",[385,5852,5843],{"href":5853,"ariaLabel":5854,"className":5855,"dataFootnoteBackref":376},"#user-content-fnref-clrs-dfs","Back to reference 2",[5842],[3337,5857,5859,5862,5863],{"id":5858},"user-content-fn-erickson-dfs",[405,5860,5861],{},"Erickson",", Ch. — Depth-First Search: Tarjan's low-link computation for bridges, articulation points, and biconnected components in linear time. ",[385,5864,5843],{"href":5865,"ariaLabel":5866,"className":5867,"dataFootnoteBackref":376},"#user-content-fnref-erickson-dfs","Back to reference 3",[5842],[5869,5870,5871],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark-mode .shiki span {color: var(--shiki-dark-mode);background: var(--shiki-dark-mode-bg);font-style: var(--shiki-dark-mode-font-style);font-weight: var(--shiki-dark-mode-font-weight);text-decoration: var(--shiki-dark-mode-text-decoration);}html.dark-mode .shiki span {color: var(--shiki-dark-mode);background: var(--shiki-dark-mode-bg);font-style: var(--shiki-dark-mode-font-style);font-weight: var(--shiki-dark-mode-font-weight);text-decoration: var(--shiki-dark-mode-text-decoration);}",{"title":376,"searchDepth":18,"depth":18,"links":5873},[5874,5875,5876,5877,5878,5879],{"id":686,"depth":18,"text":687},{"id":2610,"depth":18,"text":2611},{"id":3282,"depth":18,"text":3283},{"id":4783,"depth":18,"text":4784},{"id":5344,"depth":18,"text":5345},{"id":472,"depth":18,"text":5826},"We have seen depth-first search\nlay a tree over a graph, and we used that tree to\ndirect edges, find cycles, and decompose a digraph into strongly connected\ncomponents. This lesson turns the\nsame machinery on a different question, one that\nmatters whenever a graph models a network. Which parts of it are fragile? If a\nsingle fiber link is cut or a single router fails, does the network split into\npieces that can no longer reach one another? These single points of failure have\nnames.","md",{"moduleNumber":108,"lessonNumber":108,"order":5883},606,[5885,5889,5892],{"title":5886,"slug":5887,"difficulty":5888},"Critical Connections in a Network","critical-connections-in-a-network","Hard",{"title":5890,"slug":5891,"difficulty":5888},"Minimize Malware Spread","minimize-malware-spread",{"title":5893,"slug":5894,"difficulty":5895},"Number of Operations to Make Network Connected","number-of-operations-to-make-network-connected","Medium","---\ntitle: Bridges & Articulation Points\nmodule: Graphs\nmoduleNumber: 6\nlessonNumber: 6\norder: 606\nsummary: >-\n  A **bridge** is an edge whose removal disconnects the graph; an **articulation\n  point** is a vertex whose removal does. Both are single points of failure in a\n  network. A single depth-first search computes discovery times and **low-links**,\n  and two local criteria — $low[v] > disc[u]$ for bridges, $low[v] \\ge disc[u]$\n  for cut vertices — find them all in $O(V+E)$.\ntopics: [Graphs]\nsources:\n  - book: CLRS\n    ref: \"Ch. 20\u002F22 — Elementary Graph Algorithms (DFS, problems on connectivity)\"\n  - book: Skiena\n    ref: \"§ — Graph Traversal \u002F Connectivity\"\n  - book: Erickson\n    ref: \"Ch. — Depth-First Search\"\npractice:\n  - title: 'Critical Connections in a Network'\n    slug: critical-connections-in-a-network\n    difficulty: Hard\n  - title: 'Minimize Malware Spread'\n    slug: minimize-malware-spread\n    difficulty: Hard\n  - title: 'Number of Operations to Make Network Connected'\n    slug: number-of-operations-to-make-network-connected\n    difficulty: Medium\n---\n\nWe have seen [depth-first search](\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal)\nlay a tree over a graph, and we used that tree to\ndirect edges, find cycles, and decompose a digraph into [strongly connected\ncomponents](\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc). This lesson turns the\nsame machinery on a different question, one that\nmatters whenever a graph models a _network_. Which parts of it are fragile? If a\nsingle fiber link is cut or a single router fails, does the network split into\npieces that can no longer reach one another? These single points of failure have\nnames.\n\n> **Definition.** In a connected undirected graph $G$, a **bridge** (or _cut\n> edge_) is an edge whose removal increases the number of connected components.\n> An **articulation point** (or _cut vertex_) is a vertex whose removal, together\n> with its incident edges, increases the number of connected components.\n\nA graph with no bridges is **2-edge-connected**: you must cut at least two edges\nto disconnect it, so every pair of vertices is joined by two edge-disjoint paths.\nA graph with no articulation points (and at least three vertices) is\n**2-vertex-connected**, or **biconnected**: two vertex-disjoint paths between every\npair.[^skiena-conn] The maximal biconnected subgraphs are the **biconnected\ncomponents**; bridges and cut vertices are exactly the seams where they meet. So\nthe question \"where is my network fragile?\" is the question \"find the cut edges\nand cut vertices,\" and the surprise is that one DFS answers it.\n\n$$\n% caption: 2-edge-connected (left, every edge on a cycle) vs a graph with a bridge (right,\n%          $u\\!-\\!v$ cut)\n\\begin{tikzpicture}[\n  every node\u002F.style={circle, draw, minimum size=7mm, inner sep=0pt, font=\\small},\n  >=stealth]\n  \\definecolor{acc}{HTML}{2348F2}\n  % left: 4-cycle, 2-edge-connected\n  \\node (a) at (0,1.4) {$a$};\n  \\node (b) at (1.4,1.4) {$b$};\n  \\node (c) at (1.4,0) {$c$};\n  \\node (d) at (0,0) {$d$};\n  \\draw (a)--(b)--(c)--(d)--(a);\n  \\node[draw=none, font=\\footnotesize] at (0.7,-0.8) {no bridge};\n  % right: two triangles joined by a single bridge edge\n  \\node (u) at (4.0,0.7) {$u$};\n  \\node (v) at (5.6,0.7) {$v$};\n  \\node (p) at (3.2,1.7) {};\n  \\node (q) at (3.2,-0.3) {};\n  \\node (r) at (6.4,1.7) {};\n  \\node (t) at (6.4,-0.3) {};\n  \\draw (u)--(p)--(q)--(u);\n  \\draw (v)--(r)--(t)--(v);\n  \\draw[acc, very thick] (u)--(v);\n  \\node[draw=none, font=\\footnotesize, text=acc] at (4.8,-0.8) {bridge $u\\!-\\!v$};\n\\end{tikzpicture}\n$$\n\n## The DFS-tree view\n\nRun DFS from any vertex of a _connected, undirected_ graph. Classify each edge by\nwhen DFS first traverses it. The decisive structural fact is that only two kinds\nsurvive.\n\n> **Lemma (no cross edges).** A depth-first search of an undirected graph produces\n> only **tree edges** and **back edges**. There are no forward or cross edges.\n\n> **Proof sketch.** Consider any edge $\\{u,v\\}$, and say DFS visits $u$ first. While\n> $u$ is on the recursion stack (gray), the edge $\\{u,v\\}$ has not yet been used in\n> the direction $u \\to v$, so $v$ is reachable from $u$ through this edge and will\n> become a descendant of $u$ in the DFS tree before $u$ finishes. Thus when we do\n> traverse $\\{u,v\\}$ it connects an ancestor and a descendant: it is either a tree\n> edge (if $v$ was undiscovered) or a back edge (if $v$ is an ancestor still on the\n> stack). A cross or forward edge would require $v$ to be a non-ancestor relative\n> already finished — impossible, since that relative would itself have explored\n> $\\{u,v\\}$ first. $\\qed$\n\nThis is what makes undirected connectivity tractable: the only way to leave a DFS\nsubtree is a **back edge** climbing to an ancestor. Bridges and cut vertices are\nboth about _whether_ such an escape exists. To detect it we time the search and\ntrack how high each subtree can climb.\n\n$$\n% caption: undirected DFS yields only tree edges (solid) and back edges (dashed) — no\n%          cross or forward edges\n\\begin{tikzpicture}[\n  every node\u002F.style={circle, draw, minimum size=7mm, inner sep=0pt, font=\\small},\n  level distance=12mm, sibling distance=18mm, >=stealth]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\node (a) {$a$}\n    child {node (b) {$b$}\n      child {node (c) {$c$}}\n      child {node (d) {$d$}}\n    };\n  \\draw[acc, dashed, thick] (c) to[bend left=55] (a);\n  % tree-edge callout: leader to the solid b--d edge (right, clear of the back edge)\n  \\node[draw=none, font=\\footnotesize] (tlbl) at (2.6,-1.6) {tree edge};\n  \\draw[thin] (tlbl.west) -- (0.55,-1.85);\n  % back-edge callout: leader to the blue dashed curve (left)\n  \\node[draw=none, font=\\footnotesize, text=acc] (blbl) at (-2.9,-2.1) {back edge};\n  \\draw[thin, acc] (blbl.north east) -- (-1.55,-1.45);\n\\end{tikzpicture}\n$$\n\n> **Definition.** Let $disc[u]$ be the **discovery time** of $u$ (a counter\n> incremented at each first visit). Define the **low-link**\n> $$\n> low[u] = \\min\\Bigl(\\{disc[u]\\} \\cup \\{\\,low[c] : c \\text{ a tree-child of } u\\,\\}\n>   \\cup \\{\\,disc[w] : \\{u,w\\} \\text{ a back edge}\\,\\}\\Bigr).\n> $$\n\nIn words, $low[u]$ is the smallest discovery time reachable from $u$'s DFS subtree\nusing any number of tree edges (downward) plus **at most one** back edge (the\nfinal hop up). It measures the highest ancestor the subtree rooted at $u$ can\nreach without going through $u$'s parent. Both quantities are computed in the same\nrecursion: set $disc[u]=low[u]$ on entry, then relax $low[u]$ against each\nchild's finished $low$ and each back edge's target $disc$.\n\n$$\n% caption: DFS tree (solid = tree edge, dashed = back edge); bridge\n%          $\\iff low[v] > disc[u]$\n\\begin{tikzpicture}[\n  every node\u002F.style={circle, draw, minimum size=9mm, inner sep=1pt, font=\\small},\n  level distance=14mm, sibling distance=22mm, >=stealth]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\node (a) {$A$}\n    child {node (b) {$B$}\n      child {node (c) {$C$}\n        child {node (d) {$D$}}\n      }\n    };\n  \\node (e) [right=34mm of a] {$E$}\n    child {node (f) {$F$}};\n  % tree edge A-E\n  \\draw (a) -- (e);\n  % back edges (dashed)\n  \\draw[dashed] (c) to[bend left=45] (a);\n  \\draw[dashed] (f) to[bend right=35] (e);\n  % the bridge C-D highlighted\n  \\draw[acc, very thick] (c) -- (d);\n  % disc\u002Flow labels\n  \\node[draw=none, right=1mm of a, font=\\scriptsize, fill=white, inner sep=1.5pt] {$1\u002F1$};\n  \\node[draw=none, right=1mm of b, font=\\scriptsize] {$2\u002F1$};\n  \\node[draw=none, right=1mm of c, font=\\scriptsize] {$3\u002F1$};\n  \\node[draw=none, right=1mm of d, font=\\scriptsize, text=acc] {$4\u002F4$};\n  \\node[draw=none, right=1mm of e, font=\\scriptsize] {$5\u002F5$};\n  \\node[draw=none, right=1mm of f, font=\\scriptsize] {$6\u002F5$};\n\\end{tikzpicture}\n$$\n\nIn the figure each node is labeled $disc\u002Flow$. The back edge $C\\!\\to\\!A$ pulls\n$low[C]=low[B]=1$, so the subtrees of $B$ and $C$ can all climb back above their\nparents: none of $A\\!-\\!B$, $B\\!-\\!C$ is a bridge. But $D$ is a dead end,\n$low[D]=disc[D]=4$, nothing in $D$'s subtree reaches above $C$, so cutting\n$C\\!-\\!D$ strands $D$. The edge $A\\!-\\!E$ is a bridge too, since $E$'s only escape, the\nback edge $F\\!\\to\\!E$, stays inside $E$'s own subtree.\n\n## The bridge criterion\n\n> **Theorem (bridge).** Let $(u,v)$ be a tree edge with $v$ the child. Then\n> $(u,v)$ is a bridge $\\iff low[v] > disc[u]$.\n\n_Why._ Removing the tree edge $(u,v)$ separates $v$'s subtree from the rest of the\ntree. The only edges that could still bind the subtree to the upper graph are\nback edges out of it. A back edge from inside $v$'s subtree lands on some ancestor\n$w$ with $disc[w] = low[v]$ (its lowest reach). If $low[v] \\le disc[u]$ that\nancestor is $u$ or higher, so an alternative route exists and $(u,v)$ is not a\nbridge. If $low[v] > disc[u]$ no back edge escapes above $u$ through any vertex\nother than via the edge $(u,v)$ itself, so cutting it disconnects the subtree:\n$(u,v)$ is a bridge. Note the strict inequality: reaching $u$ itself\n($low[v]=disc[u]$) is enough to save the edge. $\\qed$\n\n## The articulation criterion\n\nCut _vertices_ need one more case, because removing $u$ deletes _all_ of $u$'s\nincident edges at once, including the tree edges to each child.\n\n> **Theorem (articulation point).**\n> - The DFS **root** is an articulation point $\\iff$ it has $\\ge 2$ tree children.\n> - A **non-root** vertex $u$ is an articulation point $\\iff$ $u$ has some tree\n>   child $v$ with $low[v] \\ge disc[u]$.\n\n_Why the root case._ The root has no ancestors, so back edges cannot help. If it\nhas two or more children, those child-subtrees were discovered separately and the\nonly edges joining them ran through the root (cross edges don't exist), so deleting\nthe root splits them. One child means the root is just a leaf-side endpoint and\nremoving it leaves the rest connected.\n\n_Why the non-root case._ For a non-root $u$, deleting $u$ severs child $v$'s\nsubtree from $u$. That subtree stays attached to the rest of the graph only if\nsome back edge climbs _strictly above_ $u$, i.e. $low[v] \u003C disc[u]$. If instead\n$low[v] \\ge disc[u]$, every escape from $v$'s subtree reaches no higher than $u$\nitself, so removing $u$ isolates that subtree and $u$ is a cut vertex. The contrast\nwith the bridge test is exactly the boundary case: a back edge to $u$\n($low[v] = disc[u]$) _saves the edge_ $(u,v)$ but does **not** save the _vertex_\n$u$, since deleting $u$ destroys that back edge's endpoint too. Hence $>$ for\nbridges, $\\ge$ for cut vertices. $\\qed$\n\n$$\n% caption: cut vertex $\\iff low[child] \\ge disc[u]$ (or root with $\\ge 2$ children)\n\\begin{tikzpicture}[\n  every node\u002F.style={circle, draw, minimum size=9mm, inner sep=1pt, font=\\small},\n  level distance=14mm, sibling distance=24mm, >=stealth]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\node (r) {$R$}\n    child {node (u) {$U$}\n      child {node (x) {$X$}\n        child {node (y) {$Y$}}\n      }\n    };\n  % cut vertex U highlighted (empty thick-border node on top — label drawn once)\n  \\node[draw=acc, very thick, minimum size=9mm, inner sep=1pt] at (u) {};\n  % back edge X -> U (reaches U but not above)\n  \\draw[dashed] (x) to[bend left=45] (u);\n  % bracket-free annotation of the stranded subtree\n  \\node[draw=none, right=10mm of x, font=\\scriptsize, text=acc, align=left]\n    {subtree of $X$:\\\\$low[X]=disc[U]$};\n  \\node[draw=none, left=1mm of r, font=\\scriptsize] {$1\u002F1$};\n  \\node[draw=none, left=1mm of u, font=\\scriptsize, text=acc] {$2\u002F2$};\n  \\node[draw=none, left=1mm of x, font=\\scriptsize] {$3\u002F2$};\n  \\node[draw=none, left=1mm of y, font=\\scriptsize] {$4\u002F4$};\n\\end{tikzpicture}\n$$\n\nHere the back edge $X\\!\\to\\!U$ gives $low[X]=disc[U]=2$. The subtree of $X$ can\nclimb to $U$ but no higher, so $low[X] \\ge disc[U]$ holds and **$U$ is a cut\nvertex**: deleting it strands $X$ and $Y$ from $R$. Yet the _edge_ $U\\!-\\!X$ is\n**not** a bridge, since $low[X] = disc[U]$ is not strictly greater. The same\nlocal data, two thresholds apart, distinguishes fragile edges from fragile\nvertices.\n\n## One DFS finds them all\n\nBoth criteria read off $disc$ and $low$, so a single recursion computes\neverything. The one subtlety is the **parent edge**: in an undirected graph the\nedge back to the parent must not be mistaken for a back edge that lowers $low$.\nGuarding by parent _vertex_ is correct only when there are no **multi-edges** (two\ndistinct edges between the same pair); with multi-edges, a second $u$–parent edge\n_is_ a genuine back edge and the second copy must be allowed to lower $low$. The\nreliable fix is to track the parent **edge id** rather than the parent vertex.\n\n```algorithm\ncaption: $\\textsc{Bridges-AP}(G)$ — find all bridges and articulation points in $O(V+E)$\n$timer \\gets 0$;\\ \\ $disc[\\,\\cdot\\,] \\gets 0$ (0 = unvisited)\nfor each vertex $s$ in $V$ do\n  if $disc[s] = 0$ then $\\textsc{Dfs}(s,\\ \\text{nil})$  \u002F\u002F nil = no parent edge\n\nprocedure $\\textsc{Dfs}(u,\\ pe)$:   \u002F\u002F $pe$ = id of edge to parent\n  $timer \\gets timer + 1$\n  $disc[u] \\gets low[u] \\gets timer$\n  $children \\gets 0$\n  for each incident edge $e = \\{u,w\\}$ do\n    if $e = pe$ then continue            \u002F\u002F skip arrival edge\n    if $disc[w] = 0$ then                \u002F\u002F tree edge\n      $children \\gets children + 1$\n      $\\textsc{Dfs}(w,\\ e)$\n      $low[u] \\gets \\min(low[u],\\ low[w])$\n      if $low[w] > disc[u]$ then report bridge $\\{u,w\\}$\n      if $pe \\ne \\text{nil}$ and $low[w] \\ge disc[u]$ then mark $u$ articulation\n    else                                 \u002F\u002F back edge\n      $low[u] \\gets \\min(low[u],\\ disc[w])$\n  if $pe = \\text{nil}$ and $children \\ge 2$ then mark $u$ articulation\n```\n\nEach vertex is discovered once and each edge is examined a constant number of\ntimes (twice over the whole run, once from each endpoint), so the search is\n$\\Theta(V+E)$, [asymptotically](\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis) free\non top of the DFS we were already running. The\nouter loop over $s$ makes it work on disconnected graphs as well: it finds the\nbridges and cut vertices of every component. The same low-link bookkeeping, with a\nstack of edges, also peels off the **biconnected components** directly (pop the\nstack down to $(u,v)$ whenever $low[v] \\ge disc[u]$), which is Tarjan's original\nformulation.[^clrs-dfs][^erickson-dfs]\n\n> **Intuition.** $low[u]$ is \"the highest rung of the ancestor ladder my subtree\n> can grab.\" A _tree edge_ is a bridge when the child cannot grab any rung above\n> its parent ($>$); a _vertex_ is a cut vertex when some child cannot grab any\n> rung strictly above $u$ ($\\ge$, because deleting $u$ also kicks away the rung at\n> $u$). One ladder, two thresholds.\n\n## Takeaways\n\n- A **bridge** (cut edge) and an **articulation point** (cut vertex) are the\n  single points of failure of a network: removing one increases the component\n  count. Their absence is **2-edge-connectivity** and **2-vertex-connectivity**\n  (biconnectivity); cut edges and vertices are the seams between **biconnected\n  components**.\n- DFS on an **undirected** graph produces only **tree edges** and **back edges**,\n  with no cross or forward edges, so the only way out of a subtree is a back edge to\n  an ancestor.\n- The **low-link** $low[u]$ is the smallest discovery time reachable from $u$'s\n  subtree via tree edges plus at most one back edge; compute it alongside $disc[u]$\n  in one recursion.\n- **Bridge criterion:** tree edge $(u,v)$ is a bridge $\\iff low[v] > disc[u]$.\n  **Articulation criterion:** a non-root $u$ is a cut vertex $\\iff$ some child has\n  $low[v] \\ge disc[u]$; the root is a cut vertex $\\iff$ it has $\\ge 2$ children.\n  The strict-vs-nonstrict gap ($>$ vs $\\ge$) is the whole distinction.\n- A single $O(V+E)$ DFS reports all bridges and cut vertices (and biconnected\n  components). Guard the **parent edge by id**, not the parent vertex, to stay\n  correct under **multi-edges**.\n\n[^skiena-conn]: **Skiena**, § — Graph Traversal \u002F Connectivity: edge- and vertex-connectivity, and articulation vertices as the weak points found by DFS low-links.\n[^clrs-dfs]: **CLRS**, Ch. 20 — Elementary Graph Algorithms (DFS): an undirected DFS yields only tree and back edges; the parenthesis\u002Fwhite-path structure that grounds the low-link argument.\n[^erickson-dfs]: **Erickson**, Ch. — Depth-First Search: Tarjan's low-link computation for bridges, articulation points, and biconnected components in linear time.\n",{"text":5898,"minutes":5899,"time":5900,"words":5901},"8 min read",7.84,470400,1568,{"title":184,"description":5880},[5904,5906,5908],{"book":5849,"ref":5905},"Ch. 20\u002F22 — Elementary Graph Algorithms (DFS, problems on connectivity)",{"book":5835,"ref":5907},"§ — Graph Traversal \u002F Connectivity",{"book":5861,"ref":5909},"Ch. — Depth-First Search","available","01.algorithms\u002F06.graphs\u002F06.bridges-and-articulation-points",[153],"KoeyNGULVz3EuzKAAhfyBXkBeHLrMxNoD9Bg-IORNeM",{"\u002Falgorithms\u002Ffoundations\u002Fwhat-is-an-algorithm":5915,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":5916,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":5917,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":5918,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":5919,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":5920,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":5921,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":5922,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":5923,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":5924,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":5925,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":5926,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":5927,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":5928,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":5929,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":5930,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":5931,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":5932,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":5933,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":5934,"\u002Falgorithms\u002Fsequences\u002Ftries":5935,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":5936,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":5937,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":5938,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":5939,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":5940,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":5901,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":5941,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":5942,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":5943,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":5944,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":5945,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":5946,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":5947,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":5948,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":5949,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":5950,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":5951,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":5952,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":5953,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":5954,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":5955,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":5956,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":5957,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":5958,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":5959,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":5960,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":5931,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":5961,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":5962,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":5963,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":5964,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":5946,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":5965,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":5966,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":5927,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":5967,"\u002Falgorithms":5968,"\u002Ftheory-of-computation":5969,"\u002Fcomputer-architecture":5969,"\u002Fphysical-computing":5969,"\u002Fdatabases":5969,"\u002Fdeep-learning":5969},1763,2107,1738,2628,1723,2048,1697,1044,1542,1565,1679,1586,1388,1465,1971,1455,1533,1483,1578,1791,1481,2704,1658,2070,1978,2080,1451,1291,1543,1883,1443,1599,2038,2241,1744,1678,2288,1929,1657,1412,1554,1418,1713,1798,1694,1762,1534,1595,1262,1495,1630,2306,2142,107,0,{"\u002Falgorithms\u002Ffoundations\u002Fwhat-is-an-algorithm":5971,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":5972,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":5973,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":5974,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":5975,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":5976,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":5977,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":5978,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":5979,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":5980,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":5981,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":5982,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":5983,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":5984,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":5985,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":5986,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":5987,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":5988,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":5989,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":5990,"\u002Falgorithms\u002Fsequences\u002Ftries":5991,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":5992,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":5993,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":5994,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":5995,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":5996,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":5997,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":5998,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":5999,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":6000,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":6001,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":6002,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":6003,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":6004,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":6005,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":6006,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":6007,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":6008,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":6009,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":6010,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":6011,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":6012,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":6013,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":6014,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":6015,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":6016,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":6017,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":6018,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":6019,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":6020,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":6021,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":6022,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":6023,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":6024,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":6025,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":6026,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":6027,"\u002Falgorithms":6028,"\u002Ftheory-of-computation":6031,"\u002Fcomputer-architecture":6034,"\u002Fphysical-computing":6037,"\u002Fdatabases":6040,"\u002Fdeep-learning":6043},{"path":11,"title":10,"module":5,"summary":14},{"path":17,"title":16,"module":5,"summary":20},{"path":23,"title":22,"module":5,"summary":27},{"path":34,"title":33,"module":29,"summary":37},{"path":40,"title":39,"module":29,"summary":43},{"path":46,"title":45,"module":29,"summary":49},{"path":56,"title":55,"module":51,"summary":59},{"path":62,"title":61,"module":51,"summary":64},{"path":67,"title":66,"module":51,"summary":70},{"path":78,"title":77,"module":72,"summary":81},{"path":84,"title":83,"module":72,"summary":87},{"path":90,"title":89,"module":72,"summary":92},{"path":95,"title":94,"module":72,"summary":98},{"path":101,"title":100,"module":72,"summary":104},{"path":107,"title":106,"module":72,"summary":112},{"path":115,"title":114,"module":72,"summary":119},{"path":126,"title":125,"module":121,"summary":129},{"path":132,"title":131,"module":121,"summary":134},{"path":137,"title":136,"module":121,"summary":140},{"path":143,"title":142,"module":121,"summary":146},{"path":149,"title":148,"module":121,"summary":151},{"path":158,"title":157,"module":153,"summary":162},{"path":165,"title":164,"module":153,"summary":167},{"path":170,"title":169,"module":153,"summary":172},{"path":175,"title":174,"module":153,"summary":177},{"path":180,"title":179,"module":153,"summary":182},{"path":185,"title":184,"module":153,"summary":187},{"path":190,"title":189,"module":153,"summary":192},{"path":195,"title":194,"module":153,"summary":198},{"path":201,"title":200,"module":153,"summary":204},{"path":211,"title":210,"module":206,"summary":213},{"path":216,"title":215,"module":206,"summary":219},{"path":222,"title":221,"module":206,"summary":224},{"path":227,"title":226,"module":206,"summary":229},{"path":236,"title":235,"module":231,"summary":238},{"path":241,"title":240,"module":231,"summary":244},{"path":247,"title":246,"module":231,"summary":249},{"path":252,"title":251,"module":231,"summary":254},{"path":257,"title":256,"module":231,"summary":259},{"path":262,"title":261,"module":231,"summary":264},{"path":267,"title":266,"module":231,"summary":269},{"path":272,"title":271,"module":231,"summary":274},{"path":277,"title":276,"module":231,"summary":279},{"path":282,"title":281,"module":231,"summary":285},{"path":292,"title":291,"module":287,"summary":295},{"path":298,"title":297,"module":287,"summary":300},{"path":303,"title":302,"module":287,"summary":305},{"path":312,"title":311,"module":307,"summary":315},{"path":318,"title":317,"module":307,"summary":320},{"path":323,"title":322,"module":307,"summary":325},{"path":328,"title":327,"module":307,"summary":330},{"path":338,"title":337,"module":332,"summary":341},{"path":344,"title":343,"module":332,"summary":346},{"path":349,"title":348,"module":332,"summary":351},{"path":359,"title":358,"module":353,"summary":362},{"path":364,"title":361,"module":353,"summary":366},{"path":369,"title":368,"module":353,"summary":373},{"path":6029,"title":6030,"module":376,"summary":376},"\u002Falgorithms","Algorithms",{"path":6032,"title":6033,"module":376,"summary":376},"\u002Ftheory-of-computation","Theory of Computation",{"path":6035,"title":6036,"module":376,"summary":376},"\u002Fcomputer-architecture","Computer Architecture",{"path":6038,"title":6039,"module":376,"summary":376},"\u002Fphysical-computing","Physical Computing",{"path":6041,"title":6042,"module":376,"summary":376},"\u002Fdatabases","Databases",{"path":6044,"title":6045,"module":376,"summary":376},"\u002Fdeep-learning","Deep Learning",1781560524206]