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

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

findPath([["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.

findPath([["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.