Menu
CoddyTech

Graph Valid Tree

Você recebe n nós, numerados de 0 a n-1, e uma lista edges de arestas não direcionadas. Cada par [a, b] conecta o nó a ao nó b.

Retorne true se as arestas formarem uma única árvore com todos os n nós: todo nó pode alcançar todos os outros, e não há ciclos. Caso contrário, retorne false.

Função

validTree(n: integer, edges: integer-2d-array) → boolean
ninteger
o número de nós, numerados de 0 a n-1
edgesinteger-2d-array
as arestas não direcionadas, cada uma um par [a, b]
Retornaboolean
true se as arestas conectam todos os n nós em uma árvore, false caso contrário

Restrições

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [a, b] com 0 ≤ a, b ≤ n-1 e a ≠ b
  • Nenhuma aresta aparece duas vezes, em nenhuma das direções.

Exemplos

Entrada
n = 5edges = [[0, 1], [0, 2], [0, 3], [1, 4]]
Saída
true
Explicação
O nó 0 está conectado aos nós 1, 2 e 3, e o nó 4 está ligado ao nó 1. Quatro arestas conectam todos os cinco nós sem formar um ciclo, então isso é uma árvore.
challenge icon

Para ir além

Quando o grafo não é uma árvore, quantas arestas você precisa remover e quantas adicionar para transformá-lo em uma? É possível contar as duas em uma única passagem?

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

Teste #1

Teste #2

Teste #3

Argumentos

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

Saída Esperada

true