Menu
CoddyTech

Find if Path Exists in Graph

Неориентированный граф содержит n узлов, пронумерованных от 0 до n-1. Каждый элемент [u, v] в edges соединяет узлы u и v, и по ребру можно пройти в любом направлении. Верните true, если по рёбрам можно пройти от source до destination, и false в противном случае. Узел всегда может достичь самого себя.

Функция

validPath(n: integer, edges: integer-2d-array, source: integer, destination: integer) → boolean
ninteger
количество узлов
edgesinteger-2d-array
рёбра, каждое из которых — пара [u, v] соединённых узлов
sourceinteger
узел, с которого вы начинаете
destinationinteger
узел, до которого нужно добраться
Возвращаетboolean
объединяет ли какой-либо путь исходный и конечный пути

Ограничения

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [u, v] при 0 ≤ u, v ≤ n-1 и u ≠ v
  • Ни одно ребро не встречается дважды ни в одном направлении.
  • 0 ≤ source, destination ≤ n-1

Примеры

Ввод
n = 6edges = [[0, 1], [1, 2], [2, 3], [4, 5]]source = 0destination = 3
Вывод
true
Пояснение
Путь 0 → 1 → 2 → 3 использует три ребра, поэтому узел 3 достижим. Узлы 4 и 5 образуют отдельную часть, которая этому пути не нужна.

lock icon+16 скрытых тестов при отправке

challenge icon

Дополнительный вопрос

Предположим, что рёбра однонаправленные: [u, v] позволяет пройти только из u в v. Какие из трёх подходов по-прежнему работают и что в них нужно изменить?

Сбросить код
def validPath(n, edges, source, destination):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Ввод

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

Ожидается

true