Énoncé¶
Les dieux nordiques doivent appliquer un protocole de communication très spécial pour prévenir les dieux des villes qui se font détruire par le serpent Jörmungandr. Ce protocole, nommé HTTP (pour Hel's Transcendent Transfer Protocol), a pour objectif de s'assurer que tous les dieux reçoivent le message.
Jøsëf est recruté par les dieux pour mettre en place le protocole de communication.
Le protocole est le suivant :
- Le message est d'abord placé dans une enveloppe, puis remis dans les mains d'un dieu quelconque, appelé le dieu initial.
- Cette enveloppe ne peut ensuite transiter qu'entre deux dieux qui partagent le même prénom ou le même nom.
- Cette enveloppe doit passer entre les mains de tous les dieux.
- Un dieu doit toujours transmettre l'enveloppe à un autre dieu qui ne l'a pas encore reçu, si possible.
- Si un dieu ne peut plus transmettre l'enveloppe à un autre dieu qui ne l'a pas encore reçu, il doit redonner l'enveloppe au dieu qui lui a initialement donné.
Étant donné la liste (non ordonnée) des paires de dieux s'étant transmis au moins une fois l'enveloppe, déterminez s'il est possible que les transmissions aient respecté le protocole HTTP, et si oui, déterminez qui a pu être le dieu initial.
Entrée¶
L’entrée contiendra :
- Sur la première ligne, un entier : N, le nombre de dieux.
- Sur les lignes suivantes, une liste de N éléments : dieux, liste des
prénoms et noms des dieux séparés par un espace.
- Une ligne par élément de la liste : une chaine de 32 caractères ou moins.
- Sur la ligne suivante, un entier : M, nombre de passations du message.
- Sur les lignes suivantes, une liste de M éléments : passations, liste
des échanges de message entre les dieux, les noms complets des deux dieux
séparés par un espace.
- Une ligne par élément de la liste : une chaine de 64 caractères ou moins.
Notez que les transmissions indiquées dans l'entrée ne respectent pas forcément l'ordre des transmissions effectuées.
Notez aussi que seuls les deux dieux impliqués dans chaque transmissions sont indiqués, dans un ordre quelconque. Le premier dieu de chaque paire n'est pas forcément celui qui a remis le message au second dieu, l'inverse est possible.
Sortie¶
Si le message n'a pas été passé en respectant le protocole, afficher sur une
ligne le message NON
. Sinon, afficher OUI
sur une ligne, puis, en affichant
un nom par ligne, le nom de tous les dieux ayant pu être dieu initial.
Vous pouvez afficher le nom des dieux dans l'ordre de votre choix.
Contraintes¶
- $2 \le N \le 20$
- $1 \le M \le 50$
- Deux dieux ne peuvent pas partager le même prénom et le même nom
- Aucune paire de dieux ne sera indiquée en double dans l'entrée.
Contraintes de performance¶
- $2 \le N \le 3\,000$
- $1 \le M \le 3\,000$