from collections import deque
def topological_sort(graph):
in_degree={u:0 for u in graph}
for u in graph:
for v in graph[u]:
in_degree[v]+=1
queue=deque([u for u in graph if in_degree[u]==0])
top_order=[]
while queue:
u = queue.popleft()
top_order.append(u)
for v in graph[u]:
in_degree[v]-=1
if in_degree[v]==0:
queue.append(v)
if len(top_order)==len(graph):
return top_order
else:
return "图中存在环,无法进行拓扑排序"
graph={
'A':['C'],
'B':['C','D'],
'C':['E'],
'D':['F'],
'E':['H','F'],
'F':['G'],
'G':[],
'H':[]
}
print('拓扑排序结果:',topological_sort(graph))