Un DFA (Deterministic Finite Automaton; Autómata Finito Determinista) es una especie de máquina que sirve para decidir qué secuencias de caracteres (palabras) de un cierto alfabeto son válidas o no. Por ejemplo, esto es un DFA que sirve para reconocer ciertas palabras del alfabeto {A, B, C}:
FALTA DIBUJO!!!
¿Cómo hay que interpretar este diagrama?
Por ejemplo: consideremos el autómata de la figura y la palabra ABBBABBC. Este empieza en el estado 0. A continuación, sigue la flecha de la A que sale del 0, y llega al estado 1. Luego sigue la de la B (desde el estado actual, el 1), y llega al estado 2. Si seguimos, veremos que la secuencia total de estados es 0,1,2,3,0,1,2,0. Como el estado 0 no es aceptador (no tiene un círculo grueso), el DFA responde No. En cambio, si hubiéramos tenido la palabra ABABBAC, la secuencia de estados hubiera sido 0,1,2,1,2,3,4,4, y hubiera respondido Ok.
Te pedimos que escribas un programa que simule la ejecución de un DFA para decidir si ciertas palabras dadas son o no son válidas.
Entrada
Una entrada consiste en la descripción de un DFA, seguido de las palabras que hay que validar. En una primera línea, se dan, separados por espacios, el número 1≤ n≤ 1000 de estados del autómata (se numeran del 0 al n−1) y el número 2≤ k≤ 26 de letras mayúsculas consecutivas usadas del alfabeto (empezando siempre por la A). A continuación, n líneas, cada una de las cuales contiene la información de un estado: un carácter A o N para indicar si el estado es aceptador o no, y k números de 0 a n−1 para indicar los destinos de las k flechas que salen del estado al recibir las k letras A, B, C, …(mira el primer ejemplo para ver cómo se representa el autómata de la figura).
A continuación, y después de una línea en blanco, se da el número t≤ 100 de palabras que hay que validar, y t líneas con las palabras, formadas únicamente por letras del alfabeto elegido. Un guión (-) indica la palabra vacía (aquella palabra que no tiene ninguna letra). Ninguna palabra tendrá más de 1000 letras.
Salida
Escribe una línea para cada una de las t palabras del caso de prueba, con Ok si la palabra es aceptada por el autómata, o No si no lo es.
Puntuación
Resolver entradas donde n≤ 3, k=2, y ninguna palabra es vacía ni tiene más de 10 caracteres.
Resolver entradas de todo tipo.
Input
5 3 N 1 0 0 N 1 2 0 N 1 3 0 N 4 0 0 A 4 4 4 12 ABBBABBC ABABBAC ABB ABBBA ABABABABA ACCA ABAB ABBA ABACABBAC CCCABBABBACCC ABCABABBACBA ABBACCC
Output
No Ok No No No No No Ok Ok Ok Ok Ok
Input
2 2 A 0 1 N 1 0 11 - A B AA AB BA BB AAA ABA ABABABBBAABABA ABABABBBAABABAB
Output
Ok Ok No Ok No No Ok Ok No No Ok