Os livros Escolha sua própria aventura são uma forma de literatura interativa em que o leitor deve tomar decisões que afetam o resultado da história. Em certos pontos da história, o leitor tem várias opções que podem ser escolhidas, cada uma enviando o leitor para uma página diferente do livro.
Por exemplo, em um cenário de fantasia, talvez seja necessário decidir na página 14 se aventurar em uma caverna misteriosa "pulando" na página 22 ou explorar a floresta próxima pulando na página 8. Esses "saltos" podem ser expressos como pares de números de páginas, assim:
14 22
14 8
Na maioria dos casos, existem muitos finais para a história, mas apenas alguns bons. O objetivo é navegar na história para alcançar um bom final.
Tarefa:
Dada uma lista de "saltos" para um determinado livro, sua tarefa é determinar uma rota que levará a um final específico. Como isso é bastante fácil, o verdadeiro desafio é fazê-lo com o menor número possível de caracteres.
Isso é código de golfe .
Entrada de amostra (onde 1 é o início e 100 é o objetivo):
1 10
10 5
10 13
5 12
5 19
13 15
12 20
15 100
Saída de amostra:
1 10 13 15 100
Entrada de amostra:
15 2
1 4
2 12
1 9
3 1
1 15
9 3
12 64
4 10
2 6
80 100
5 10
6 24
12 80
6 150
120 9
150 120
Saída de amostra:
1 15 2 12 80 100
Notas:
- A lista de saltos será inserida pelo usuário, a partir de um arquivo ou stdin. Você pode escolher o que for mais conveniente.
- A entrada conterá 1 salto por linha, com a origem e o destino separados por um único espaço.
- As linhas na entrada não são garantidas em nenhuma ordem específica.
- Um caminho bem-sucedido começará na página 1 e terminará na página 100.
- Você pode assumir que há pelo menos 1 caminho para a meta. Você não precisa encontrar todos os caminhos, nem o mais curto. Basta encontrar pelo menos um.
- O menor número de página será 1. Não há limite para o maior número de página. (Você pode supor que ele caiba no intervalo de um int.)
- Podem existir loops. Por exemplo, a lista pode ter saltos das páginas 5 a 10, 10 a 19 e 19 a 5.
- Pode haver becos sem saída. Ou seja, uma página de destino pode não ter para onde ir.
- Por outro lado, pode haver páginas inacessíveis. Ou seja, uma página de origem pode não ser o destino de quaisquer saltos.
- Nem todos os números de página entre 1 e 100 têm garantia de uso.
- Sua saída deve consistir em uma rota válida de números de página, começando com 1 e terminando em 100, separados por espaços.
Lembre-se, este é um código de golfe, então a solução mais curta vence!
EDIT: Adicionada outra amostra para teste.