File tree 1 file changed +33
-0
lines changed 1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution (object ):
2
+ def minimumSemesters (self , N , relations ):
3
+ """
4
+ :type N: int
5
+ :type relations: List[List[int]]
6
+ :rtype: int
7
+ """
8
+ indegree = [0 for i in range (N + 1 )]
9
+ adj = [set () for _ in range (N + 1 )]
10
+ for pre , cur in relations :
11
+ indegree [cur ] += 1 #统计入度
12
+ adj [pre ].add (cur ) #统计邻居节点
13
+
14
+ from collections import deque
15
+ queue = deque ()
16
+ for i , x in enumerate (indegree ):
17
+ if x == 0 and i > 0 : #将入度为0的节点入队
18
+ queue .append (i )
19
+
20
+ semester_cnt = 0
21
+ finished_course = 0
22
+ while queue :
23
+ next_queue = deque ()
24
+ semester_cnt += 1 #新的学期来了
25
+ for cur in queue :
26
+ finished_course += 1 #又一门课学完了
27
+ for neighbor in adj [cur ]:
28
+ indegree [neighbor ] -= 1
29
+
30
+ if indegree [neighbor ] == 0 :
31
+ next_queue .append (neighbor ) #下个学期可以学neighbor这门课了
32
+ queue = next_queue
33
+ return semester_cnt if finished_course == N else - 1 #如果所有的课都学完了,那么finished_course == N
You can’t perform that action at this time.
0 commit comments