Menu
CoddyTech

Strongly Connected Components

DifficileGraphespython iconjava iconcpp iconc iconjs icon+10

Un graphe orienté possède n nœuds, numérotés de 0 à n-1, et une liste d’edges, où [from, to] représente une arête du nœud from au nœud to.

Une composante fortement connexe est un plus grand groupe de nœuds dans lequel chaque nœud peut atteindre tous les autres en suivant les arêtes. Chaque nœud appartient à exactement une composante, et un nœud qui ne se trouve sur aucun cycle forme une composante à lui seul. Retournez le nombre de composantes fortement connexes.

Fonction

countSCC(n: integer, edges: integer-2d-array) → integer
ninteger
le nombre de nœuds
edgesinteger-2d-array
les arêtes orientées, chacune sous la forme [from, to]
Renvoieinteger
le nombre de composantes fortement connexes

Contraintes

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [from, to] avec 0 ≤ from, to < n et from ≠ to
  • Aucune arête n’apparaît deux fois.

Exemples

Entrée
n = 6edges = [[0, 1], [1, 2], [2, 0], [2, 3], [3, 4], [4, 3], [5, 4]]
Sortie
3
Explication
Les nœuds 0, 1 et 2 forment une boucle, ils peuvent donc s’atteindre mutuellement. Les nœuds 3 et 4 pointent l’un vers l’autre. Le nœud 5 atteint le nœud 4, mais rien ne revient vers le nœud 5, il reste donc isolé : 3 composantes.
challenge icon

Pour aller plus loin

Combien d’arêtes au minimum faudrait-il ajouter pour que le graphe entier forme une seule composante fortement connexe ?

Réinitialiser le code
def countSCC(n, edges):
    # Écrivez le code ici

Test #1

Test #2

Arguments

n = 6
edges = [[0, 1], [1, 2], [2, 0], [2, 3], [3, 4], [4, 3], [5, 4]]

Résultat attendu

3