文章目录

  • 拓扑排序
  • 二、代码

拓扑排序

1)在图中找到所有入度为0的点输出
2)把所有入度为0的点在图中删掉,继续找入度为0的点输出,周而复始
3)图的所有点都被删除后,依次输出的顺序就是拓扑排序

要求:有向图且其中没有环
应用:事件安排、编译顺序

二、代码

 public static List<Node> sortedTopology(Graph graph) {// key 某个节点   value 剩余的入度HashMap<Node, Integer> inMap = new HashMap<>();// 只有剩余入度为0的点,才进入这个队列Queue<Node> zeroInQueue = new LinkedList<>();for (Node node : graph.nodes.values()) {inMap.put(node, node.in);if (node.in == 0) {zeroInQueue.add(node);}}List<Node> result = new ArrayList<>();while (!zeroInQueue.isEmpty()) {Node cur = zeroInQueue.poll();result.add(cur);for (Node next : cur.nexts) {inMap.put(next, inMap.get(next) - 1);if (inMap.get(next) == 0) {zeroInQueue.add(next);}}}return result;}

拓扑排序(依次加入入度为0的节点)相关推荐

  1. 2192. 有向无环图中一个节点的所有祖先(邻接表 加 拓扑排序)

    如果直接使用邻接表不记录已经遍历过的数,暴力搜索超超时,所以需要拓扑排序来记录入度为0的点,入度为0时,他之前的父节点已经记录完毕,可以直接加入到他的子节点中. 最后还需要转换结果,从小到大,直接用s ...

  2. [拓扑排序]旅行计划

    旅 行 计 划 旅行计划 旅行计划 题目描述 小明要去一个国家旅游.这个国家有# N N N个城市,编号为 1 1 1至 N N N,并且有 M M M条道路连接着,小明准备从其中一个城市出发,并只往 ...

  3. java 有向无环图 树_拓扑排序-有向无环图(DAG, Directed Acyclic Graph)

    条件: 1.每个顶点出现且只出现一次. 2.若存在一条从顶点 A 到顶点 B 的路径,那么在序列中顶点 A 出现在顶点 B 的前面. 有向无环图(DAG)才有拓扑排序,非DAG图没有拓扑排序一说. 一 ...

  4. 基于入度的拓扑排序(Kahn's Algorithm)

    本文中的图用邻接链表来表示 拓扑排序只针对于有向无环图(DAG)才能完成,所以可以利用拓扑排序来判断一个有向图是否有环. 某一点的入度:图中指向该顶点的边的个数 图1 :DAG 以上图简单说明,点0的 ...

  5. 洛谷 P3244 / loj 2115 [HNOI2015] 落忆枫音 题解【拓扑排序】【组合】【逆元】

    组合计数的一道好题.什么非主流题目 题目背景 (背景冗长请到题目页面查看) 题目描述 不妨假设枫叶上有 \(n​\) 个穴位,穴位的编号为 \(1\sim n​\).有若干条有向的脉络连接着这些穴位. ...

  6. 【数据结构与算法】【算法思想】拓扑排序

    一.拓扑排序 拓扑排序是基于依赖关系的节点,根据依赖关系而生成的序列.节点和依赖关系往往要生成有向无环图.类似的问题有:穿衣服裤子的先后关系,生成穿衣序列/专业课程与前置课程形成的课程学习序列/代码编 ...

  7. 深度优先,广度优先,拓扑排序(实战题解)

    前言 深度遍历和广度遍历在算法占比很大,主要是解决图的问题(树也是图的一种) 一.深度优先遍历 1.深度遍历(DFS)解决什么问题 DFS解决的是连通性的问题,即给定两⼀个起始点(或某种起始状态)和⼀ ...

  8. 如何生成有向图_八十六、从拓扑排序探究有向图

    「@Author:Runsen」 关于排序,其实还有很多,比如常见的希尔排序,桶排序,计数排序和基数排序,由于要过渡到数据结构有向图,因此需要了解拓扑排序和邻接矩阵概念. 拓扑排序 拓扑排序本身并不是 ...

  9. hihoCoder 1175 拓扑排序

    hihoCoder 1175 拓扑排序 描述 小Hi和小Ho所在学校的校园网被黑客入侵并投放了病毒.这事在校内BBS上立刻引起了大家的讨论,当然小Hi和小Ho也参与到了其中.从大家各自了解的情况中,小 ...

最新文章

  1. 谷歌最新发布数据集:Open Images V6 来了!新增局部叙事标注形式
  2. 指针和Const限定符
  3. linux 解决man命令输出到文档打开乱码问题
  4. Android图表控件MPAndroidChart——曲线图LineChart的使用(财富收益图)
  5. 最不像地球的45个地方,你都见过几个?
  6. 一个程序员送给大学生的一些话
  7. jenkins中文插件_Jenkins学习笔记(一)
  8. 知乎 2019 新知青年大会开幕,用问题改变世界的方向
  9. 断言assert的使用
  10. Python写的一个文件生成器脚本
  11. 大疆无人机实现目标定位
  12. pycharm文件名颜色含义
  13. 学计算机女生找不到男朋友,女生找不到男朋友,大多都是这三个原因!
  14. LogicFlow与原生BPMN的对比
  15. 使用GORM操作数据库
  16. KiTTY及cnKiTTY配置文件kitty.ini的简单中文注释
  17. 2015年西北工业大学机试第八题
  18. 在Centos 6.4系统下安装配置fetion飞信机器人
  19. 用户名不能包含中文和特殊符号,只能输入英文加数字
  20. 强大的Git客户端:Tower for Mac(7.1(291)

热门文章

  1. 基于FPGA的LCD1602显示屏驱动
  2. 深圳大数据培训:大数据技术可以解决哪些问题?
  3. Datawhale 7月学习——李弘毅深度学习:卷积神经网络
  4. 人工智能在无人驾驶中的应用
  5. iOS iphone5屏幕适配 autosizing
  6. 【计算机毕业设计】基于微信小程序的美食食谱大全系统
  7. 《弃子长安》第二章 长乐驱蛊
  8. 新南威尔士大学巩东课题组招收若干名CV/ML/AI方向博士生
  9. 用python发送163邮件
  10. 售价2999元起  华为5G自拍视频旗舰nova7系列强势来袭