Se sabe que todos los miembros de un clan ninja han sido alumnos de un único ninja de su mismo clan de mayor edad (su “sensei”), con la única excepción del miembro de más edad y fundador del clan (el “root-sensei”), que no ha tenido ningún sensei.
Se te pide que hagas un programa que, a partir de un listado con los ninjas del clan que han sido senseis de alguien y los nombres de sus alumnos, reescriba dicha información en varios formatos distintos.
Entrada
En una línea, el número N de miembros del clan que han sido sensei de alguien. A continuación, N líneas con uno o más nombres por línea. El primer nombre de cada línea es el nombre del sensei; a continuación, los nombres de sus alumnos.
La última línea de la entrada es la palabra ROOT, SORT, TREE o XML, con el tipo de salida que se espera que tu programa produzca.
Salida
Mira los ejemplos para saber cómo debes escribir la salida en cada uno de los casos.
Si se te pide ROOT, deberás escribir una línea con el nombre del root-sensei (el único miembro del clan que no ha tenido ningún sensei), como en el Ejemplo 1.
Si se te pide SORT, deberás escribir los listados que recibiste, pero ordenados alfabéticamente, tanto por sensei como por alumno. Usa comas, espacios y puntos exactamente como en el Ejemplo 2.
Si se te pide TREE, deberás escribir el árbol de relaciones alumno-sensei, como en el Ejemplo 3. En este formato hay tantas líneas como ninjas. Deja cuatro espacios de indentado entre niveles, y no escribas más espacios de los estrictamente necesarios. Escribe los alumnos de un sensei en el mismo orden en el que aparecieron en la entrada.
Si se te pide XML, deberás escribir el árbol de alumno-sensei en formato XML, como en el Ejemplo 4. Al igual que antes, deja cuatro espacios de indentado, no escribas más espacios de la cuenta, y escribe los alumnos en el mismo orden en el que aparecieron.
Puntuación
Input
5 Jiraiya Minato Minato Kakashi Obito Rin Hiruzen Jiraiya Tsunade Orochimaru Naruto Konohamaru Kakashi Naruto Sasuke Sakura ROOT
Output
Hiruzen
Input
5 Jiraiya Minato Minato Kakashi Obito Rin Hiruzen Jiraiya Tsunade Orochimaru Naruto Konohamaru Kakashi Naruto Sasuke Sakura SORT
Output
Hiruzen: Jiraiya, Orochimaru, Tsunade. Jiraiya: Minato. Kakashi: Naruto, Sakura, Sasuke. Minato: Kakashi, Obito, Rin. Naruto: Konohamaru.
Input
5 Jiraiya Minato Minato Kakashi Obito Rin Hiruzen Jiraiya Tsunade Orochimaru Naruto Konohamaru Kakashi Naruto Sasuke Sakura TREE
Output
---Hiruzen |---Jiraiya | \---Minato | |---Kakashi | | |---Naruto | | | \---Konohamaru | | |---Sasuke | | \---Sakura | |---Obito | \---Rin |---Tsunade \---Orochimaru
Input
5 Jiraiya Minato Minato Kakashi Obito Rin Hiruzen Jiraiya Tsunade Orochimaru Naruto Konohamaru Kakashi Naruto Sasuke Sakura XML
Output
<sensei name=Hiruzen> <sensei name=Jiraiya> <sensei name=Minato> <sensei name=Kakashi> <sensei name=Naruto> <student name=Konohamaru /> </sensei> <student name=Sasuke /> <student name=Sakura /> </sensei> <student name=Obito /> <student name=Rin /> </sensei> </sensei> <student name=Tsunade /> <student name=Orochimaru /> </sensei>