Skip to content

Latest commit

 

History

History
35 lines (32 loc) · 1.1 KB

1462.md

File metadata and controls

35 lines (32 loc) · 1.1 KB

1462. Course Schedule IV

Solution 1 (time O(n^3), space O(n^2))

class Solution(object):
    def checkIfPrerequisite(self, numCourses, prerequisites, queries):
        """
        :type numCourses: int
        :type prerequisites: List[List[int]]
        :type queries: List[List[int]]
        :rtype: List[bool]
        """
        g = [[] for _ in range(numCourses)]
        indeg = [0] * numCourses
        ispre = [[False] * numCourses for _ in range(numCourses)]
        for p in prerequisites:
            indeg[p[1]] += 1
            g[p[0]].append(p[1])

        q = deque([i for i in range(numCourses) if indeg[i] == 0])
        while len(q) > 0:
            cur = q.popleft()
            for new in g[cur]:
                ispre[cur][new] = True
                for i in range(numCourses):
                    ispre[i][new] = ispre[i][new] or ispre[i][cur]
                indeg[new] -= 1
                if indeg[new] == 0:
                    q.append(new)
        ans = []
        for q in queries:
            ans.append(ispre[q[0]][q[1]])
        return ans