Menu
CoddyTech

Strongly Connected Components

어려움그래프python iconjava iconcpp iconc iconjs icon+10

방향 그래프에는 n개의 노드가 있으며, 노드는 0부터 n-1까지 번호가 매겨져 있습니다. 또한 edges 목록이 있으며, 여기서 [from, to]는 노드 from에서 노드 to로 향하는 간선입니다.

강한 연결 요소는 간선을 따라가서 모든 노드가 서로에게 도달할 수 있는 가장 큰 노드 그룹입니다. 각 노드는 정확히 하나의 요소에 속하며, 어떤 사이클에도 속하지 않는 노드는 그 자체로 하나의 요소를 이룹니다. 강한 연결 요소의 개수를 반환하세요.

함수

countSCC(n: integer, edges: integer-2d-array) → integer
ninteger
노드의 수
edgesinteger-2d-array
방향이 있는 각 간선은 [from, to]로 표시됩니다.
반환값integer
강하게 연결된 구성 요소의 수

제약 조건

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [from, to]이고 0 ≤ from, to < n이며 from ≠ to
  • 어떤 간선도 두 번 나타나지 않습니다.

예제

입력
n = 6edges = [[0, 1], [1, 2], [2, 0], [2, 3], [3, 4], [4, 3], [5, 4]]
출력
3
설명
노드 0, 1, 2는 루프를 형성하므로 서로 도달할 수 있습니다. 노드 3과 4는 서로를 가리킵니다. 노드 5는 4에 도달하지만 5로 돌아오는 경로는 없으므로, 혼자 있습니다. 구성 요소는 3개입니다.
challenge icon

후속 질문

전체 그래프를 하나의 강한 연결 요소로 만들려면 간선을 최소 몇 개 추가해야 할까요?

코드 초기화
def countSCC(n, edges):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

인자들

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

예상 출력

3