É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
Accède à la solution de cet exercice en devenant Membre Premium 🚀
Premium
- +100h de formations
- +180 exercices de code
- +100h de mentorats en rediffusion
- 20 projets
- Mentorats groupés hebdomadaires
- Support individuel avec nos mentors
Deviens membre Premium
Accède aux solutions des membres de la communauté en devenant Membre Premium 🚀
Premium
- +100h de formations
- +180 exercices de code
- +100h de mentorats en rediffusion
- 20 projets
- Mentorats groupés hebdomadaires
- Support individuel avec nos mentors
# Le code de départ accessible pour les membres Premium
Un instant...
Résultats
Deviens membre Premium
Accède aux tests unitaires pour vérifier ton code en devenant Membre Premium 🚀
Premium
- +100h de formations
- +180 exercices de code
- +100h de mentorats en rediffusion
- 20 projets
- Mentorats groupés hebdomadaires
- 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 :