A depot release uses four distinct representations. The moveable disjoint set transfers one shipment without detaching old parent paths. A block-cut index finds depots whose loss separates an undirected road network. A Kruskal reconstruction tree answers minimax road-weight thresholds on a frozen graph. A zero-suppressed diagram represents permitted combinations of dispatch flags. These indexes answer different questions even when they contain the same depot or shipment IDs. Version each road snapshot and allowed-set catalog separately; a changed road or policy invalidates the corresponding static structure.
Project: audit member moves, cut depots, bottlenecks, and set families
Acceptance trace
Start with shipment groups {1,3,5} and {2,4}; after moving shipment 3 into the latter, their sizes and ID sums become (2,6) and (3,9). A road graph with two triangles and two bridges has articulation depots 2, 3, and 5. The minimum maximum edge on the route from depot 0 to 2 is 29, while depot 5 is unreachable from 0 in a separate weighted example. A four-set dispatch family includes cold plus insured but rejects cold alone. Check each trace against a direct model with the stated snapshot.
Failure and cost review
Fuzz merge and move operations against explicit group labels; test a move of a member whose old DSU node is a root. Compare articulation vertices with component counts after removing each vertex from small graphs. Compare bottleneck queries with an all-pairs minimax oracle, including disconnected vertices and repeated edge weights. Enumerate every subset of a small item universe to check diagram membership and count. Reject parallel roads in the simple block-cut model and unknown items in the set family. Do not claim any of the static graph or family indexes repair themselves after their inputs change.
Common Mistakes
- Do not reparent a live DSU node during a logical member move.
- Do not apply the non-root articulation rule to a DFS root.
- Do not confuse bottleneck maximum with path-weight sum.
- Do not treat a skipped zero-suppressed item as a wildcard.
Connected lessons
- Moveable disjoint sets: transfer one shipment without splitting its old tree
- Block-cut indexes: separate articulation depots from cyclic road blocks
- Kruskal reconstruction trees: answer route bottlenecks through merge ancestors
- Zero-suppressed diagrams: share sparse dispatch set families
- Projects
- Quizzes
- Data Structures
