图论 判断是否有环

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


如果是一个无向图,其实可以直接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
相关推荐
啥都想学的又啥都不会的研究生40 分钟前
常规算法学习
java·数据结构·b树·学习·算法·排序算法
I AM_SUN2 小时前
153. 寻找旋转排序数组中的最小值
数据结构·c++·算法·leetcode·二分法
小白菜又菜2 小时前
Leetcode 2942. Find Words Containing Character
算法·leetcode·职场和发展
蒟蒻小袁4 小时前
力扣面试150题--二叉树的最近公共祖先
leetcode·面试·深度优先
数据与人工智能律师7 小时前
加密货币投资亏损后,能否以“欺诈”或“不当销售”索赔?
大数据·网络·算法·云计算·区块链
努力学习的小廉8 小时前
我爱学算法之—— 二分查找(下)
算法
AdSet聚合广告8 小时前
APP广告变现,开发者如何判断对接的广告SDK安全合规?
大数据·后端·算法·安全·uni-app
不二狗8 小时前
每日算法 -【Swift 算法】实现回文数判断!
开发语言·算法·swift
梁下轻语的秋缘11 小时前
Python人工智能算法 模拟退火算法求解01背包问题:从理论到实践的完整攻略
人工智能·python·算法·数学建模·模拟退火算法
Smile灬凉城66611 小时前
IPsec协议
考研·数学·算法