【图论】有向无环图中一个节点的所有祖先 - 邻接表(DFS)

文章目录

题目:有向无环图中一个节点的所有祖先

2192. 有向无环图中一个节点的所有祖先

题目描述

代码与解题思路

go 复制代码
func getAncestors(n int, edges [][]int) [][]int {
    g := make([][]int, n)
    for _, e := range edges {
        x, y := e[0], e[1]
        g[x] = append(g[x], y)
    }
    ans := make([][]int, n)
    vis := make([]int, n)
    start := 0
    var dfs func(int)
    dfs = func(x int) {
        vis[x] = start+1 // 因为 vis 初始是 0, 所以要 +1 错开
        for _, v := range g[x] {
            if vis[v] != start+1 {
                ans[v] = append(ans[v], start)
                dfs(v)
            }
        }
    }
    for start < n {
        dfs(start)
        start++
    }
    return ans
}

采用思路:灵神的题解

这道题的核心就在于如何解决重复遍历的问题,用什么方法都做

相关推荐
耳总是一颗苹果20 分钟前
排序---插入排序
数据结构·算法·排序算法
YLCHUP36 分钟前
【联通分量】题解:P13823 「Diligent-OI R2 C」所谓伊人_连通分量_最短路_01bfs_图论_C++算法竞赛
c语言·数据结构·c++·算法·图论·广度优先·图搜索算法
花火|1 小时前
算法训练营day62 图论⑪ Floyd 算法精讲、A star算法、最短路算法总结篇
算法·图论
GuGu20241 小时前
新手刷题对内存结构与形象理解的冲突困惑
算法
汤永红1 小时前
week4-[二维数组]平面上的点
c++·算法·平面·信睡奥赛
晴空闲雲2 小时前
数据结构与算法-字符串、数组和广义表(String Array List)
数据结构·算法
颜如玉3 小时前
位运算技巧总结
后端·算法·性能优化
冷月半明4 小时前
时间序列篇:Prophet负责优雅,LightGBM负责杀疯
python·算法
秋难降4 小时前
聊聊 “摸鱼式” 遍历 —— 受控遍历的小心机
数据结构·算法·程序员
等风来不如迎风去5 小时前
【动态规划】309. 买卖股票的最佳时机含冷冻期及动态规划模板
算法·动态规划