day 58 | 拓扑排序和 dijkstra

拓扑排序

  • bfs
  • 初始化,找到所有入度为 0 的节点加入 que
  • 遍历 que, 每取出一个节点,就把他对应 start 边的 end 节点的入度度数-1
  • 如果有对应度数为 0 的相邻点则加入 que

dijkstra 排序

  • 维持一个点集合
  • 往集合加入 1 节点,并且更新 mindist 数组(表示的是该节点到 1 的最短距离)
  • 遍历所有节点,得到离当前结合最近的点 cur
  • 更新和 cur 相邻的,且不在集合内的 mindist 距离
  • mindist[i]=min(mindist[cur] + g[cur][i],mindist[i])

然后是关于是否可以有负数的问题

  • Prime 维护的是一个 到集合的最短距离,所以可以有负数
  • dijkstra维护的事节点到 start 的最短距离,(不能保证一直加最小数就是最短路径,可能中途遍历过程中就能找到最短路径了)
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-21 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
努力学习的小绵羊:我反倒觉得这种挺好的,给不到我想要的就别浪费大家时间了
点赞 评论 收藏
分享
10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
头像
昨天 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗? 刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务