Encontrar um caminho possível em ordem alfabética

Dada uma lista de passagens aéreas representadas por pares de aeroportos de partida e chegada [from, to], reconstrua o itinerário em ordem. Todas as passagens pertencem a um homem que parte de A. Portanto, o itinerário deve começar em A.

Exemplos

find_path([["C", "F"], ["A", "C"], ["I", "Z"], ["F", "I"]]) ➞ ["A", "C", "F", "I", "Z"]

find_path([["A","C"], ["A","B"], ["C","B"], ["B","A"], ["B","C"]]) ➞ ["A","B","A","C","B","C"]
# Another possible reconstruction is ["A","C","B","A","B","C"].
# But it is larger in lexical order.

find_path([["Y", "L"], ["D", "A"],["A", "D"], ["R", "Y"], ["A", "R"]]) ➞  ["A", "D", "A", "R", "Y", "L"]

Observações

  • Se houver vários itinerários válidos, você deverá retornar o itinerário que tenha a menor ordem lexicográfica quando lido como uma única string. Por exemplo, o itinerário ["A", "B"] tem uma ordem lexicográfica menor que ["A", "C"].
  • Você pode presumir que todas as passagens formam pelo menos um itinerário válido.
  • É necessário usar todas as passagens uma única vez.