Мне нужно разработать алгоритм O (| V | + | E |), связанный с топологической сортировкой, который в ориентированном ациклическом графе (DAG) определяет количество путей от каждой вершины графа к t (t - узел с степень 0). Я разработал следующую модификацию DFS:
DFS(G,t):
for each vertex u ∈ V do
color(u) = WHITE
paths_to_t(u) = 0
for each vertex u ∈ V do
if color(u) == WHITE then
DFS-Visit(u,t)
DFS-Visit(u,t):
color(u) = GREY
for each v ∈ neighbors(u) do
if v == t then
paths_to_t(u) = paths_to_t(u) + 1
else then
if color(v) == WHITE then
DFS-Visit(v)
paths_to_t(u) = paths_to_t(u) + paths_to_t(v)
color(u) = BLACK
Но я не уверен, связан ли этот алгоритм с топологической сортировкой или мне следует перестроить свою работу с другой точки зрения.