图论之拓扑排序
依旧是模板
from collection import deque,defaultdict
def topological_sort(n,edges):
inDegree=[0]*n
graph=defaultdict(list)
for s,t in edges:
inDegree[t]+=1
graph[s].append(t)
queue=deque([i for i in range(n) if inDegree[i]==0])
result=[]
while queue:
cur=queue.popleft()
result.append(cur)
for file in graph[cur]:
inDegree[file]-=1
if inDegree[file]==0:
queue.append(file)
if len(result)==n:
print(" ".join(map(str,result)))
else:
print(-1)
if __name__=="__main__":
n,m=map(int,input().split())
edges=[tuple(map(int,input().split())) for _ in range(m)]
topological_sort(n,edges)

浙公网安备 33010602011771号