Menu
CoddyTech

Find if Path Exists in Graph

Un graphe non orienté comporte n nœuds, numérotés de 0 à n-1. Chaque entrée [u, v] de edges relie les nœuds u et v, et tu peux parcourir une arête dans les deux sens. Renvoie true si tu peux aller de source à destination en suivant les arêtes, et false sinon. Un nœud peut toujours se rejoindre lui-même.

Fonction

validPath(n: integer, edges: integer-2d-array, source: integer, destination: integer) → boolean
ninteger
le nombre de nœuds
edgesinteger-2d-array
les arêtes, chacune étant une paire [u, v] de nœuds connectés
sourceinteger
le nœud à partir duquel vous commencez
destinationinteger
le nœud que vous souhaitez atteindre
Renvoieboolean
si un chemin quelconque relie la source et la destination

Contraintes

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [u, v] avec 0 ≤ u, v ≤ n-1 et u ≠ v
  • Aucune arête n’apparaît deux fois, dans un sens ou dans l’autre.
  • 0 ≤ source, destination ≤ n-1

Exemples

Entrée
n = 6edges = [[0, 1], [1, 2], [2, 3], [4, 5]]source = 0destination = 3
Sortie
true
Explication
Le parcours 0 → 1 → 2 → 3 utilise trois arêtes, donc le nœud 3 est accessible. Les nœuds 4 et 5 forment une partie séparée dont le parcours n’a jamais besoin.

lock icon+16 tests cachés à la soumission

challenge icon

Pour aller plus loin

Supposons que les arêtes soient à sens unique : [u, v] permet de se déplacer de u à v uniquement. Laquelle des trois approches fonctionne encore, et que faut-il y changer ?

Réinitialiser le code
def validPath(n, edges, source, destination):
    # Écrivez le code ici
Cas de test

Cas 1

Cas 2

Entrée

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

Attendu

true