Graphe orienté

On considère dans cet exercice un graphe orienté représenté sous forme de listes d’adjacence.

On suppose que les sommets sont numérotés de 0 à n-1.

Par exemple, le graphe suivant :

image

est représenté par la liste d’adjacence suivante :

🐍 Script Python
adj = [[1, 2], [2], [0], [0]]

Écrire une fonction voisins_entrants(adj, x) qui prend en paramètre le graphe donné sous forme de liste d’adjacence et qui renvoie une liste contenant les voisins entrants du sommet x, c’est-à-dire les sommets y tels qu’il existe une arête de y vers x.

Exemples :

Exemple

🐍 Console Python
>>> voisins_entrants([[1, 2], [2], [0], [0]], 0)
[2, 3]
>>> voisins_entrants([[1, 2], [2], [0], [0]], 1)
[0]
Compléter ci-dessous

###
# Testsbksl-nlbksl-nlassert voisinspy-undentrants([[1, 2], [2], [0], [0]], 0) == [2, 3]bksl-nlassert voisinspy-undentrants([[1, 2], [2], [0], [0]], 1) == [0]bksl-nlbksl-nl# Autres testsbksl-nlbksl-nladj = [bksl-nl [1, 2, 3],bksl-nl [2],bksl-nl [3],bksl-nl [2]bksl-nl]bksl-nlbksl-nlassert voisinspy-undentrants(adj, 0) == []bksl-nlassert sorted(voisinspy-undentrants(adj, 2))== [0, 1, 3]bksl-nlbksl-nl 5/5
def voisinspy-undentrants(adj, x):bksl-nl ...bksl-nlbksl-nl# Testsbksl-nlbksl-nlassert voisinspy-undentrants([[1, 2], [2], [0], [0]], 0) == [2, 3]bksl-nlassert voisinspy-undentrants([[1, 2], [2], [0], [0]], 1) == [0]bksl-nlbksl-nlbksl-nlbksl-nldef voisinspy-undentrants(adj, x):bksl-nl voisins = []bksl-nl for i in range(len(adj)):bksl-nl if x in adj[i]:bksl-nl voisins.append(i)bksl-nl return voisinsbksl-nlbksl-nl