IF672 - Algoritmos e
Estruturas de Dados
novembro 2002
a março 2003
2 - As Aventuras de Jamilson: Museu
Jamilson, um garoto acompanhado de seus
pais, está no museu de paleontologia mais famoso da França.
Não só ele, como a maioria dos garotos, querem chegar rapidamente na atração
principal: o Tiranossauro Rex. O problema é que seus pais não permitem que ele
saia de perto deles. Jamilson gostaria de saber o quão mais rápido seria para
chegar na atração principal em comparação com os pais deles, se os mesmos
seguissem os conselhos de Jamilson.
Os pais
de Jamilson percorrem o museu sem nenhuma lógica precisa. Apenas garantem
que nunca visitarão o mesmo local duas vezes se não for estritamente necessário,
e visitarão todo o museu. Eles seguem sempre o primeiro salão ainda
não visitado a partir do salão que está agora (busca em profundidade).
Jamilson procura
chegar o mais rápido possível na atração principal (busca em
largura).
Considere que os corredores entre os salões têm o mesmo
tamanho. E cada visita a um salão demora 1 hora.
O problema é achar a diferença entre o tempo que demoraria
se Jamilson andasse sozinho em relação ao tempo que demora com os pais.
Entrada e Saída de dados
A entrada consiste em várias
conjuntos de dados.
Cada conjunto começa com quatro
valores:
(N < 100) indicando a quantidade de salões no museu
(E < 1000) indicando a quantidade de corredores no museu
(s <= N) indicando a entrada do museu (considere como um
salão)
(t <= N) indicando o salão da atração principal.
Segue E linhas cada uma com dois valores (s1, s2), indicando que existe um
corredor de s1 a s2 (0 < s1,s2 <= N).
Fim de arquivo indica o final da
entrada.
A saída consiste do valor inteiro (quantidade
de horas) indicado na especificação
do problema (a diferença entre [quantidade de salões visitados pela família
com os pais guiando] e [quantidade de salões que seriam
visitados se Jamilson tivesse guiando a família]).
NOTA: Se houver mais de uma opção,
tanto o casal como Jamilson prefere os salões com números menores.
Entrada exemplo
10 9 1 10
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 9 1 10
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
10 17 1 10
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
Saída correspondente
0
8
8