сп-смеж = [[…]…]
степень = [](кол-во сп-смеж)
итог = []
нулСтепень = []
цикл а в сп-смеж
цикл б в а:
++степень[б]
цикл пока i < кол-во сп-смеж:
если степень[i] == 0:
нулСтепень.добавить(i)
цикл пока ie < нулСтепень; ie++:
i = нулСтепень[ie]:
цикл а в сп-смеж[i]:
— —степень[а]
если степень[а] == 0:
нулСтепень.добавить[а]
итог.добавить(i)
сп-смеж = [[…]…]
степень = [](кол-во сп-смеж)
итог = []
цикл а в сп-смеж
цикл б в а:
++степень[б]
цикл пока i < кол-во сп-смеж:
если степень[i] == 0:
степень = -1
цикл а в сп-смеж[i]:
——степень[а]
i = 0
итог.добавить(i)
def topological_sort_dfs(graph):
def dfs(vertex, visited, stack):
visited.add(vertex)
for neighbor in graph[vertex]:
if neighbor not in visited:
dfs(neighbor, visited, stack)
stack.append(vertex)
visited = set()
stack = []
for vertex in graph:
if vertex not in visited:
dfs(vertex, visited, stack)
return stack[::-1]
graph = {
'A': ['C'],
'B': ['C', 'D'],
'C': ['E'],
'D': ['F'],
'E': ['H', 'F'],
'F': ['G'],
'G': [],
'H': []
}
result = topological_sort_dfs(graph)
print("Топологическая сортировка:", result)