Menu
CoddyTech

Strongly Connected Components

DifícilGrafospython iconjava iconcpp iconc iconjs icon+10

Um grafo direcionado tem n nós, numerados de 0 a n-1, e uma lista de edges, em que [from, to] é uma aresta do nó from para o nó to.

Uma componente fortemente conexa é o maior grupo de nós em que cada nó pode alcançar todos os outros seguindo as arestas. Cada nó pertence a exatamente uma componente, e um nó que não está em nenhum ciclo forma uma componente sozinho. Retorne o número de componentes fortemente conexas.

Função

countSCC(n: integer, edges: integer-2d-array) → integer
ninteger
o número de nós
edgesinteger-2d-array
as arestas direcionadas, cada uma como [from, to]
Retornainteger
o número de componentes fortemente conexas

Restrições

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [from, to] com 0 ≤ from, to < n e from ≠ to
  • Nenhuma aresta aparece duas vezes.

Exemplos

Entrada
n = 6edges = [[0, 1], [1, 2], [2, 0], [2, 3], [3, 4], [4, 3], [5, 4]]
Saída
3
Explicação
Os nós 0, 1 e 2 formam um ciclo, então alcançam uns aos outros. Os nós 3 e 4 apontam um para o outro. O nó 5 alcança o 4, mas nada volta para o 5, então ele fica isolado: 3 componentes.
challenge icon

Para ir além

Quantas arestas seria preciso adicionar para que todo o grafo se tornasse um único componente fortemente conexo?

Redefinir código
def countSCC(n, edges):
    # Escreva o código aqui

Teste #1

Teste #2

Argumentos

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

Saída Esperada

3