Menu
CoddyTech

Find if Path Exists in Graph

Un grafo non orientato ha n nodi, numerati da 0 a n-1. Ogni voce [u, v] di edges collega i nodi u e v e puoi percorrere un arco in entrambe le direzioni. Restituisci true se puoi andare da source a destination lungo gli archi, e false altrimenti. Un nodo può sempre raggiungere sé stesso.

Funzione

validPath(n: integer, edges: integer-2d-array, source: integer, destination: integer) → boolean
ninteger
il numero di nodi
edgesinteger-2d-array
gli archi, ciascuno una coppia [u, v] di nodi connessi
sourceinteger
il nodo da cui parti
destinationinteger
il nodo che vuoi raggiungere
Restituisceboolean
se un determinato percorso unisce la sorgente e la destinazione

Vincoli

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

Esempi

Input
n = 6edges = [[0, 1], [1, 2], [2, 3], [4, 5]]source = 0destination = 3
Output
true
Spiegazione
Il percorso 0 → 1 → 2 → 3 usa tre archi, quindi il nodo 3 è raggiungibile. I nodi 4 e 5 formano una parte separata di cui il percorso non ha mai bisogno.

lock icon+16 test nascosti all’invio

challenge icon

Per approfondire

Supponiamo che gli archi siano a senso unico: [u, v] ti permette di andare da u a v soltanto. Quali dei tre approcci funzionano ancora e cosa modifichi in essi?

Ripristina il codice
def validPath(n, edges, source, destination):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Input

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

Atteso

true