Menu
CoddyTech

Graph Valid Tree

Hai n nodi, numerati da 0 a n-1, e un elenco edges di archi non orientati. Ogni coppia [a, b] collega il nodo a al nodo b.

Restituisci true se gli archi formano un unico albero con tutti gli n nodi: ogni nodo può raggiungere tutti gli altri e non ci sono cicli. Altrimenti, restituisci false.

Funzione

validTree(n: integer, edges: integer-2d-array) → boolean
ninteger
il numero di nodi, numerati da 0 a n-1
edgesinteger-2d-array
gli archi non orientati, ciascuno una coppia [a, b]
Restituisceboolean
vero se gli archi uniscono tutti gli n nodi in un unico albero, falso altrimenti

Vincoli

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [a, b] con 0 ≤ a, b ≤ n-1 e a ≠ b
  • Nessun arco compare due volte, in nessuna delle due direzioni.

Esempi

Input
n = 5edges = [[0, 1], [0, 2], [0, 3], [1, 4]]
Output
true
Spiegazione
Il nodo 0 è collegato ai nodi 1, 2 e 3, mentre il nodo 4 dipende dal nodo 1. Quattro archi collegano tutti e cinque i nodi senza formare cicli, quindi questo è un albero.
challenge icon

Per approfondire

Quando il grafo non è un albero, quanti archi devi rimuovere e quanti aggiungerne per trasformarlo in un albero? Riesci a contarli entrambi in un unico passaggio?

Ripristina il codice
def validTree(n, edges):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomenti

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

Output atteso

true