#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param prerequisites int整型二维数组 
# @param n int整型 
# @return int整型一维数组
# 步骤
# 1.cur,pre都在rs,若cur在pre前面,则存在环,直接返回空
# 2.cur在rs,pre不在rs,则把pre插入cur前面
# 3.cur不在rs ,pre在rs,则直接把cur插入到pre后面
# 4.cur,pre都不在rs,则直接把pre,cur加入rs末尾
# 5.遍历0~n,若出现不存在rs的值i,说明i没有依赖关系,直接加入rs末尾即可

class Solution:
    def findOrder(self, prerequisites: List[List[int]], n: int) -> List[int]:
        rs = []
        for cur, pre in prerequisites: 
            if cur in rs:
                if pre in rs: # 1
                    if rs.index(cur) < rs.index(pre):
                        return []
                else: # 2
                    rs.insert(rs.index(cur), pre)
            else:
                if pre in rs: # 3
                    rs.insert(rs.index(pre) + 1, cur)
                else: # 4
                    rs.append(pre)
                    rs.append(cur)
        for i in range(n): # 5
            if i not in rs:
                rs.append(i)
        return rs
        # write code here