图论 判断是否有环

前言:有点忘记是怎么判断一个图中是否是有环


如果是一个无向图,其实可以直接dfs,加上一个vis数组来一起判断

如果是有向图呢,

python 复制代码
class Solution:
    def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:
        n = numCourses
        ed = [[] for _ in range(n)]
        for x in prerequisites:
            u,v = x
            ed[v].append(u)

        cnt = [0]*(n)
        flag = False
        def dfs(x):
            nonlocal flag
            cnt[x] = 1
            if flag:
                return
            for v in ed[x]:
                if cnt[v] == 0:
                    dfs(v)
                if cnt[v] == 1:
                    flag = True
                    return
            cnt[x] = 2
        
        for i in range(n):
            if cnt[i] == 0:
                dfs(i)
        return not flag
相关推荐
暴风鱼划水7 分钟前
算法题(Python)哈希表 | 2.两个数组的交集
python·算法·哈希表
fufu031112 分钟前
Linux环境下的C语言编程(四十二)
linux·c语言·算法
HalvmånEver15 分钟前
Linux : 基础IO(三)
linux·运维·算法
oushaojun217 分钟前
linux中backtrace实战
linux·运维·算法·backtrace
埃伊蟹黄面34 分钟前
模拟算法思想
c++·算法·leetcode
副露のmagic40 分钟前
更弱智的算法学习day 10
python·学习·算法
逸风尊者1 小时前
开发可掌握的知识:uber H3网格
后端·算法
半问1 小时前
付费投流硬控互联网
人工智能·算法·互联网·推荐·流量
西岸行者1 小时前
学习Hammerstein-Wiener 模型,以及在回声消除场景中的应用
人工智能·学习·算法
夏乌_Wx1 小时前
练题100天——DAY24:罗马数字转整数+环形链表+大小端判断
算法