Максимальное значение узла, которое может быть достигнуто с использованием данных соединений

Опубликовано: 26 Февраля, 2023

Дан набор из 10 9 узлов. Имеется N двунаправленных соединений, и i соединение соединяет узлы A i th и B i th . Начиная с первого узла, найти максимальное значение узла, которое может быть достигнуто с использованием заданных соединений.

Примеры:

Input:  N = 4
1  4
4  6
4  10
7  3
Output: 10
Explanation: Move from 1st node to 4th node using connection 1, then move to 10th node from 4th node using connection 3.

Input:  N = 3
5   6
6   70
70  800
Output:  1
Explanation: You are initially on node 1 and there is no connection from the 1st node so you can’t reach anywhere.

Подход: Задача может быть решена с помощью DFS на основе следующей идеи.

The idea/intuition is to start from 1st node and check the nodes we can reach from it directly or through any connected path. Build a graph of nodes where connections connect any two floors, then run dfs and update maximum at each step. 

Следуйте шагам, указанным ниже, чтобы реализовать идею:

  • Создайте неупорядоченную карту для маркировки соединений между узлами.
  • Создайте набор, который покажет, посещался ли узел ранее при обходе dfs.
  • Запустите обход dfs с узла 1, пометьте текущий узел как посещенный в наборе и обновите максимум текущим узлом.
  • Пройдите по всем дочерним узлам текущего узла, если дочерний узел не посещается, вызовите dfs для дочернего узла.
  • Наконец, когда все связанные узлы пройдены, у нас есть максимальный узел, достижимый в res .

Ниже приведена реализация описанного выше подхода.

Выход:

10

Временная сложность: O(V + E), где V — количество вершин, а E — количество ребер в графе.
Вспомогательное пространство: O(V), так как требуется дополнительный посещенный массив размера V.

Статьи по Теме:

  • Введение в график — учебные пособия по структурам данных и алгоритмам
  • Поиск в глубину или DFS для графика