00802-Find-Eventual-Safe-States
Problem
Solution
class Solution:
def eventualSafeNodes(self, graph: List[List[int]]) -> List[int]:
n = len(graph)
adj, degree = defaultdict(list), [0] * n
queue = deque()
for i in range(n):
degree[i] = len(graph[i])
if degree[i] == 0:
queue.append(i)
for j in graph[i]:
adj[j].append(i)
res = []
while queue:
node = queue.popleft()
res.append(node)
for i in adj[node]:
if degree[i] != 0:
degree[i] -= 1
if degree[i] == 0:
queue.append(i)
return sorted(res)
# degree = {0:2, 1:2, 2:1, 3:1, 4:1, 5:0, 6:0}
# adj = {
# 0: [4],
# 1: [0],
# 2: [0, 1],
# 3: [1],
# 5: [2, 4],
# }
Last updated