Skip to content
BASA DSA

Reconstruct Itinerary

HardAdvanced Graphs

Use every directed flight ticket exactly once to form an itinerary starting at JFK. Among valid itineraries choose the lexicographically smallest airport sequence.

Example 1

Directed tickets: departure → arrival. Parallel tickets remain separate edges.Directed tickets: departure → arrival. Parallel tickets remain separate edges. Vertices: node 0: AAA, node 1: BBB, node 2: JFK. Edges: node 2 (JFK) → node 1 (BBB); node 2 (JFK) → node 0 (AAA); node 0 (AAA) → node 2 (JFK).AAABBBJFK
Directed tickets: departure → arrival. Parallel tickets remain separate edges.

Input
tickets = [["JFK","BBB"],["JFK","AAA"],["AAA","JFK"]]
Output
["JFK","AAA","JFK","BBB"]

Explanation

AAA first permits returning to JFK and taking BBB last; BBB first strands unused tickets.

Example 2

Directed tickets: departure → arrival. Parallel tickets remain separate edges.Directed tickets: departure → arrival. Parallel tickets remain separate edges. Vertices: node 0: AAA, node 1: JFK. Edges: node 1 (JFK) → node 0 (AAA); node 0 (AAA) → node 1 (JFK); node 1 (JFK) → node 0 (AAA).AAAJFK
Directed tickets: departure → arrival. Parallel tickets remain separate edges.

Input
tickets = [["JFK","AAA"],["AAA","JFK"],["JFK","AAA"]]
Output
["JFK","AAA","JFK","AAA"]

Explanation

Duplicate JFK->AAA tickets are separate edges and each is used.

Example 3

Directed tickets: departure → arrival. Parallel tickets remain separate edges.Directed tickets: departure → arrival. Parallel tickets remain separate edges. Vertices: node 0: JFK, node 1: LAX. Edges: node 0 (JFK) → node 1 (LAX).JFKLAX
Directed tickets: departure → arrival. Parallel tickets remain separate edges.

Input
tickets = [["JFK","LAX"]]
Output
["JFK","LAX"]

Explanation

The sole ticket gives the only itinerary.

Constraints

  • 1 <= number of tickets <= 300
  • Airport codes are three uppercase letters
  • A valid itinerary exists
  • Duplicate tickets are distinct usable edges

Function contractfindItineraryArguments: json
Loading draft…
SolutionRuns on your device
Loading draft…