Количество узлов, доступных из всех других узлов Graph

Опубликовано: 19 Сентября, 2022

Для заданного ориентированного графа с N узлами и M ребрами в массиве V[] задача состоит в том, чтобы найти количество узлов, доступных из всех других узлов, т. е. у них есть хотя бы один путь из всех других узлов.

Примеры:

Input: N = 5 and M = 5, V = [[1, 2], [2, 3], [3, 4], [4, 3], [5, 4]]
Output: 2
Explanation:
We can look closely after forming graph 
than captain america only can hide in a 
room 3 and 4 because they are the only room 
which have gates through them. So, 
answer is 2.

Input: N = 2, M = 1, V = [[1, 2]]
Output: 1

Подход: Эту проблему можно решить с помощью алгоритма Косараджу для определения количества сильно связанных компонентов, основанного на следующей идее:

All the nodes in a single strongly connected component are reachable from any other node of that component. If each connected component is considered as a node of the graph then there are the following cases:

  • The connected components are disconnected. So, more than one component will have outdegree greater than 0. In this case, no node is reachable from all other nodes.
  • There is only one connected component. This time all the nodes are reachable from all other nodes.
  • There are more than one connected components and only one node has outdegree equal to 0. In this case only that node is reachable from all other nodes. 

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

  • Найти все сильно связные компоненты данного графа
  • Создайте новый граф, в котором каждый компонент сильной связи рассматривается как отдельный узел. (скажем, этот график грррр )
  • Найдите количество узлов в grrrr , имеющих outстепень == 0 (пусть это число равно x1 )
    • Если x1 > 1 , то ответ равен 0 , потому что это предполагает, что некоторые узлы недоступны из других или некоторые компоненты отключены.
    • Если x1 = 0 , то ответ также равен 0 .
    • Таким образом, существуют только тогда, когда x1 = 1 и ответ равен количеству узлов в компоненте сильной связности, имеющей исходную степень = 0 в графе grrrr .

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

Временная сложность: O(N+M)
Вспомогательное пространство: О(Н+М)

РЕКОМЕНДУЕМЫЕ СТАТЬИ