We use cookies for site analytics. Accept to help us understand how the site is used. See our Privacy Policy for details.
A hard graphs problem, graded against 5 test cases (2 of them hidden).
Nodes and edges - traversal, connectivity, cycles, and shortest paths.
Reach for it when you see: Explicit edges, a grid treated as a graph, or dependencies between items.
More Graphsproblems →Run a DFS, assigning each node a discovery timestamp `disc[u]` and tracking `low[u]` = the smallest `disc` value reachable from u via tree edges followed by at most one back edge. For a tree edge (u, v), the edge is a *bridge* iff `low[v] > disc[u]` - that means v's subtree cannot reach u or any ancestor of u except through (u, v) itself, so removing it disconnects the graph. Skip the immediate parent when scanning neighbors so we don't mistake the edge we came in on for a back edge. Note: with multi-edges between u and v we'd need an edge-id check instead of a parent check, but the constraint `no repeated connections` rules that out.
The full reference solution in every supported language stays in the editor above - reveal it there once you have had a real attempt.
Read off this problem's own test suite, so these are the cases a submission actually has to survive.
These apply to the pattern as a whole, not just this problem.