Étant donnée une liste L de relations qui définit un graphe orienté acyclique.
Vous devez complétez la fonction is_ancestor qui retourne True si b est un ancêtre de a dans le graphe.
La liste L est une liste de tuples entiers (x, y) tels que le graphe a un arc du sommet x au sommet y.
Le graphe est garanti être un arbre ou une forêt (chaque sommet a au plus un arc entrant).
Exemples :
L = [(0, 1)]
Ici, c'est un arbre, avec deux sommets, et 0 est un ancêtre de 1. Donc
-
is_ancestor(L, 1, 0)doit retournerTrue -
is_ancestor(L, 0, 1)doit retournerFalse
Avec un graphe plus complexe
L = [(4, 5), (7, 8), (0, 2), (1, 3), (2, 6), (0, 1), (1, 4)]
-
is_ancestor(L, 5, 1)doit retournerTrue -
is_ancestor(L, 4, 6)doit retournerFalse
-
Utilisez un dictionnaire pour tracer rapidement le parent de chaque enfant.
-
Remontez la chaîne des parents à partir du sommet cible jusqu'à ce que vous trouviez l'ancêtre recherché ou que vous atteigniez la racine.
Deviens membre Premium magic_button
Accède à la solution de cet exercice en devenant Membre Premium 🚀
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Résultats
Deviens membre Premium magic_button
Accède aux tests unitaires pour vérifier ton code en devenant Membre Premium 🚀
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Bravo, tu as réussi cet exercice de code 🥳
Envoyer ma solution
Vous avez trouvé une solution alternative pour cet exercice ? Proposez votre solution à la communauté 👇
Ma solution :