Menu
CoddyTech

Find if Path Exists in Graph

Graf nieskierowany ma n węzłów, ponumerowanych od 0 do n-1. Każdy element [u, v] tablicy edges łączy węzły u i v, a krawędź można przemierzać w obu kierunkach. Zwróć true, jeśli można przejść od source do destination wzdłuż krawędzi, a w przeciwnym razie false. Węzeł zawsze może dotrzeć do samego siebie.

Funkcja

validPath(n: integer, edges: integer-2d-array, source: integer, destination: integer) → boolean
ninteger
liczba węzłów
edgesinteger-2d-array
krawędzie, z których każda jest parą [u, v] połączonych węzłów
sourceinteger
węzeł, od którego zaczynasz
destinationinteger
węzeł, do którego chcesz dotrzeć
Zwracaboolean
czy jakaś ścieżka łączy źródło i cel

Ograniczenia

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [u, v] przy 0 ≤ u, v ≤ n-1 i u ≠ v
  • Żadna krawędź nie występuje dwukrotnie, w żadnym kierunku.
  • 0 ≤ source, destination ≤ n-1

Przykłady

Wejście
n = 6edges = [[0, 1], [1, 2], [2, 3], [4, 5]]source = 0destination = 3
Wyjście
true
Wyjaśnienie
Ścieżka 0 → 1 → 2 → 3 wykorzystuje trzy krawędzie, więc węzeł 3 jest osiągalny. Węzły 4 i 5 tworzą osobną część, której nie obejmuje ta ścieżka.

lock icon+16 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Załóżmy, że krawędzie są jednokierunkowe: [u, v] pozwala przejść tylko z u do v. Które z trzech podejść nadal działają i co należy w nich zmienić?

Zresetuj kod
def validPath(n, edges, source, destination):
    # Wpisz tutaj kod
Przypadki testowe

Przypadek 1

Przypadek 2

Wejście

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

Oczekiwane

true