【图论】有向无环图中一个节点的所有祖先 - 邻接表(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
}

采用思路:灵神的题解

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

相关推荐
sjsjs1117 分钟前
【数据结构-扫描线】力扣57. 插入区间
数据结构·算法·leetcode
王哈哈嘻嘻噜噜19 分钟前
数据结构中线性表的定义和特点
数据结构·算法
一杯茶一道题38 分钟前
LeetCode 260. 只出现一次的数字 III
算法·leetcode
MogulNemenis39 分钟前
力扣415周赛
java·数据结构·算法·leetcode
Rense143 分钟前
常用的基于无线射频( UWB)室内定位技术的原理与算法
算法
zzhnwpu44 分钟前
代码随想录算法训练营第三七天| 动态规划:完全背包理论基础 518.零钱兑换II 377. 组合总和 Ⅳ 322. 零钱兑换
算法·leetcode·动态规划
一道秘制的小菜1 小时前
C++第十一节课 new和delete
开发语言·数据结构·c++·学习·算法
学不会lostfound1 小时前
一、机器学习算法与实践_03概率论与贝叶斯算法笔记
算法·机器学习·概率论·高斯贝叶斯
学地理的小胖砸1 小时前
【高分系列卫星简介——高分一号(GF-1)】
开发语言·数码相机·算法·遥感·地理信息
oliveira-time1 小时前
C++ prime plus-7-編程練習
算法