Skip to content

Commit 86e9e7f

Browse files
committedFeb 19, 2020
2020-02-19
1 parent 714950f commit 86e9e7f

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed
 
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
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

0 commit comments

Comments
 (0)
Please sign in to comment.