Escalera de palabras

Tiempo límite 2 s
Memoria límite 256 MB
Casos de prueba 11
Dificultad Difícil Algoritmos
Mostrar (4) BFSCadenasGrafosTablas hash
Enviar solución

Puntos: 20

Tipos de problema
Lenguajes permitidos
C, C++, Java, Python, Rust

Tienes una palabra inicial \(a\), una palabra final \(b\) y un diccionario. Una escalera es una secuencia de palabras que empieza en \(a\) y termina en \(b\), en la que cada palabra se obtiene de la anterior cambiando exactamente una letra, y todas las palabras salvo \(a\) están en el diccionario.

Imprime la cantidad de palabras de la escalera más corta (contando \(a\) y \(b\)), o \(0\) si no hay ninguna.

Entrada

La primera línea tiene \(a\) y \(b\) \((a \ne b)\). La segunda tiene \(n\) \((1 \le n \le 5001)\) y la tercera las \(n\) palabras distintas del diccionario. Todas las palabras (incluidas \(a\) y \(b\)) tienen el mismo largo, entre \(1\) y \(10\), y son de letras minúsculas.

Salida

El largo de la escalera más corta o \(0\).

Ejemplo 1

Entrada

hit cog
6
hot dot dog lot log cog

Salida

5

Ejemplo 2

Entrada

hit cog
5
hot dot dog lot log

Salida

0

Basado en el problema 127 de LeetCode, Word Ladder, adaptado a entrada y salida estándar; enunciado redactado para este juez. Es parte de la lista Grind 75 de Yangshun Tay.


Comentarios

No hay comentarios por el momento.