当前位置: 首页 > news >正文

【图论】图的遍历 - 构建领接表(无向图)

文章目录

  • 例题:受限条件下可到达节点的数目
    • 题目描述
    • 代码与注释
    • 模板抽象

例题:受限条件下可到达节点的数目

题目链接:2368. 受限条件下可到达节点的数目

题目描述

代码与注释

func reachableNodes(n int, edges [][]int, restricted []int) (ans int) {r := make(map[int]bool, len(restricted))for _, v := range restricted {r[v] = true // 把受限的节点设置为 true}g := make([][]int, n)for _, v := range edges { // 建邻接表x, y := v[0], v[1]if r[x] == false && r[y] == false {g[x] = append(g[x], y)g[y] = append(g[y], x)}}var dfs func(int, int)dfs = func(x, father int) { // dfs 邻接表存储的图ans++for _, v := range g[x] {if v != father { // 避免回溯到父节点导致重复遍历dfs(v, x)}}}dfs(0, -1) // 从 0 1 开始return ans
}

模板抽象

建邻接表

for _, v := range edges { // 建邻接表x, y := v[0], v[1]g[x] = append(g[x], y)g[y] = append(g[y], x)
}

通过领接表 dfs 图

var dfs func(int, int)
dfs = func(x, father int) { // dfs 邻接表存储的图for _, v := range g[x] {if v != father { // 避免回溯到父节点导致重复遍历dfs(v, x)}}
}
dfs(0, -1) // 从 0 1 开始
http://www.lryc.cn/news/311924.html

相关文章:

  • Claude 3家族惊艳亮相:AI领域掀起新浪潮,GPT-4面临强劲挑战
  • Linux Watchdog 机制是什么
  • Linux权限问题
  • python基础练习题目
  • 视频编码标准H.264/AVC,H.265/HEVC,VP8/VP9,AV1的基本原理、优缺点以及适用场景
  • MATLAB2020a安装编译器mingw-64(6.3.0)
  • Python网络请求高级篇:Requests库的深度运用
  • AWS认证
  • 【排序】详解插入排序
  • Linux开发板移植rz、sz指令实现串口传输文件
  • Android抓包--不走代理的请求Proxy.NO_PROXY,过代理检测,burpsuite+Postern
  • SQL教学: MySQL进阶操作详解--探索DML语句的高级用法
  • JavaScript命名标识符规范,JavaScript的for循环与双重for循环
  • Qt/自定义控件的封装
  • 【硬件相关】RDMA网络类别及基础介绍
  • POS 之 ETH质押现状
  • Qt之插件
  • Tensorflow2.0+部署(tensorflow/serving)过程备忘记录Windows
  • Docker的安装跟基础使用一篇文章包会
  • SQL技巧笔记(一):连续3人的连号问题—— LeetCode601.体育馆的人流量
  • LeetCode 1976.到达目的地的方案数:单源最短路的Dijkstra算法
  • vulnhub-----Hackademic靶机
  • 十秒学会Ubuntu命令行:从入门到进阶
  • 华为智慧教室3.0的晨光,点亮教育智能化变革
  • 深度学习预测分析API:金融领域的Game Changer
  • 外贸网站做Google SEO 用wordpress模板的优势
  • 后端面试题整理-1
  • Python图像处理之光斑分析
  • 软件测试 - 测试用例基本理论
  • 在 Flutter 中使用 flutter_gen 简化图像资产管理