Find Eventual Safe States

n a directed graph, we start at some node and every turn, walk along a directed edge of the graph. If we reach a node that is terminal (that is, it has no outgoing directed edges), we stop.

Now, say our starting node is_eventually safe _if and only if we must eventually walk to a terminal node. More specifically, there exists a natural numberKso that for any choice of where to walk, we must have stopped at a terminal node in less thanKsteps.

Which nodes are eventually safe? Return them as an array in sorted order.

The directed graph hasNnodes with labels0, 1, ..., N-1, whereNis the length ofgraph. The graph is given in the following form:graph[i]is a list of labelsjsuch that(i, j)is a directed edge of the graph.

Example:
Input:
 graph = [[1,2],[2,3],[5],[0],[5],[],[]]

Output:
 [2,4,5,6]
Here is a diagram of the above graph.
Illustration of graph

Note:

  • graph

    will have length at most

    10000

    .

  • The number of edges in the graph will not exceed

    32000

    .

  • Each

    graph[i]

    will be a sorted list of different integers, chosen within the range

    [0, graph.length - 1]

分析

把所有入度为0的一个个移除就是答案,这里把图反向一下做dict

DFS

Last updated

Was this helpful?