图论 判断是否有环

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


如果是一个无向图,其实可以直接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
相关推荐
闪电麦坤958 小时前
数据结构:图的表示 (Representation of Graphs)
数据结构·算法·图论
利以檀本人(梦泽不忙)9 小时前
#T1359. 围成面积
c++·程序人生·算法
胡萝卜3.09 小时前
【LeetCode&数据结构】设计循环队列
数据结构·算法·leetcode·队列·循环队列
徐归阳9 小时前
数组本身的深入解析
数据结构·c++·算法
白榆!10 小时前
string类的实现
开发语言·c++·算法
CHANG_THE_WORLD10 小时前
线程特定存储
算法·线程
ai产品老杨10 小时前
打破技术壁垒,推动餐饮食安标准化进程的明厨亮灶开源了
前端·javascript·算法·开源·音视频
睡不醒的kun11 小时前
leetcode算法刷题的第二十六天
数据结构·c++·算法·leetcode·职场和发展·贪心算法
fangzelin511 小时前
基础排序--冒泡--选择--插入
数据结构·c++·算法
THMAIL11 小时前
机器学习从入门到精通 - 卷积神经网络(CNN)实战:图像识别模型搭建指南
linux·人工智能·python·算法·机器学习·cnn·逻辑回归