File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed
Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change 1+ from collections import deque
2+
3+ def topology_sort (graph , inDegree ):
4+ queue = deque ()
5+
6+ result = [- 1 ] * (N + 1 )
7+
8+
9+ # 진입차수가 0인 정점을 queue에 추가
10+ for i in range (1 , N + 1 ):
11+ if inDegree [i ] == 0 :
12+ queue .append (i )
13+ result [i ] = 1
14+
15+
16+ while queue :
17+ now = queue .popleft ()
18+
19+ for vertex in graph [now ]:
20+ inDegree [vertex ] -= 1
21+ if inDegree [vertex ] == 0 :
22+ queue .append (vertex )
23+ result [vertex ] = result [now ] + 1
24+
25+ return result
26+
27+
28+
29+ # 입력값 받기
30+ N , M = map (int , input ().split ())
31+
32+ # 과목 개수만큼 이차원 리스트 만들기
33+ graph = [ [] for _ in range (N + 1 )]
34+
35+ # 진입차수 리스트
36+ inDegree = [0 ] * (N + 1 )
37+ result = [] * (N + 1 )
38+
39+ for i in range (M ):
40+ A , B = map (int , input ().split ())
41+ graph [A ].append (B )
42+ inDegree [B ] += 1
43+
44+ result = topology_sort (graph , inDegree )
45+ for i in range (1 ,N + 1 ):
46+ print (result [i ], end = " " )
You can’t perform that action at this time.
0 commit comments