У меня есть ориентированный граф G (V, E). G может содержать циклы. Каждый v начинается со значения n [v]. Давайте назовем S {v} всеми вершинами, достижимыми v в G. Для каждого v мне нужно обновить n [v] с помощью max (n [u]), u∈S {v}.
I я пытался использовать Quick-Union со сжатием пути , но я не могу, потому что G - это ориентированный граф.
Можно использовать DFS на каждом узле, но сложность будет O (V (V + E)) в худшем случае.
Есть ли лучший способ приблизиться к нему (возможно, используя топологическую сортировку, переходное сокращение или сильно связанные компоненты)?