banner
NEWS LETTER

Python拓扑排序模板

Scroll down
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from collections import defaultdict, deque


def topo_sort(graph):
lst = []
in_degree = defaultdict(int)
for u in graph:
for v in graph[u]:
in_degree[v] += 1

s = deque([u for u in graph if in_degree[u] == 0])
while s:
lst.append(n := s.popleft())
for m in graph.get(n, []):
in_degree[m] -= 1
if in_degree[m] == 0:
s.append(m)

return None if any(in_degree.values()) else lst

我很可爱,请给我钱

其他文章