Menu
CoddyTech

Strongly Connected Components

SchwerGraphenpython iconjava iconcpp iconc iconjs icon+10

Ein gerichteter Graph hat n Knoten, nummeriert von 0 bis n-1, und eine Liste von edges, wobei [from, to] eine Kante vom Knoten from zum Knoten to ist.

Eine stark zusammenhängende Komponente ist eine größtmögliche Gruppe von Knoten, in der jeder Knoten jeden anderen Knoten erreichen kann, indem er Kanten folgt. Jeder Knoten gehört genau einer Komponente an, und ein Knoten, der auf keinem Zyklus liegt, bildet eine Komponente für sich. Gib die Anzahl der stark zusammenhängenden Komponenten zurück.

Funktion

countSCC(n: integer, edges: integer-2d-array) → integer
ninteger
die Anzahl der Knoten
edgesinteger-2d-array
die gerichteten Kanten, jeweils als [from, to]
Gibt zurückinteger
die Anzahl der stark zusammenhängenden Komponenten

Einschränkungen

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [from, to] mit 0 ≤ from, to < n und from ≠ to
  • Keine Kante kommt zweimal vor.

Beispiele

Eingabe
n = 6edges = [[0, 1], [1, 2], [2, 0], [2, 3], [3, 4], [4, 3], [5, 4]]
Ausgabe
3
Erklärung
Die Knoten 0, 1 und 2 bilden eine Schleife, sodass sie einander erreichen. Die Knoten 3 und 4 zeigen aufeinander. Knoten 5 erreicht 4, aber nichts führt zurück zu 5, daher steht er allein: 3 Komponenten.
challenge icon

Weiterführende Frage

Wie wenige Kanten müsstest du hinzufügen, damit der gesamte Graph eine einzige stark zusammenhängende Komponente ist?

Code zurücksetzen
def countSCC(n, edges):
    # Schreibe hier den Code

Test #1

Test #2

Argumente

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

Erwartete Ausgabe

3