Return a deep copy of a connected undirected graph, preserving neighbor relationships.
A good solution should
- State the invariant or decision rule that makes the approach correct.
- Explain the time and space complexity in terms of the input sizes and required output.
- Handle empty, minimal, duplicate, and boundary-shaped inputs covered by the contract.
Reasoning prompt
Maintain a map from original node identity to its copy before traversing neighbors; this handles cycles and self-loops.
Use the linked judge for the canonical problem. The examples above are compact TRT checks; write additional cases before submitting, especially for the boundary that tends to break your chosen invariant.