# 图论正式发布! 录友们! 今天和大家正式宣布:大家期盼已久的「代码随想录图论」正式发布了。 **一年多来,日日夜夜,伏案编码、思考、写作,就为了今天给录友们一个交代**! 我知道录友们在等图论等太久了,其实我比大家都着急。 ![大家一直都在催](https://file1.kamacoder.com/i/algo/20240613105618.png) 图论完整版目前已经开放在代码随想录网站:programmercarl.com **「代码随想录图论」共分为 五大模块**,共有三十一篇长文讲解: * 深搜与广搜 * 并查集 * 最小生成树 * 拓扑排序 * 最短路算法 ![](https://file1.kamacoder.com/i/algo/20240613104436.png) **耗时一年之久,代码随想录图论 终于面世了**! 一年前 23年的3月份 我刚刚更新完了 [代码随想录算法公开课](https://mp.weixin.qq.com/s/xsKjrnB4GyWApm4BYxshvg) ,这是我亲自录制的 140期 算法视频讲解,目前口碑极佳。 录完公开课之后,我就开始筹划更新图论内容了,无奈图论内容真的很庞大。 关于图论章节,**可以说 是代码随想录所有章节里画图数量最多,工程量最大的一个章节**,整个图论 画图就400百多幅。 随便截一些图,大家感受一下: ![](https://file1.kamacoder.com/i/algo/20240613104703.png) ![](https://file1.kamacoder.com/i/algo/20240613104824.png) ![](https://file1.kamacoder.com/i/algo/20240613104852.png) ![](https://file1.kamacoder.com/i/algo/20240613104926.png) ![](https://file1.kamacoder.com/i/algo/20240613105007.png) ![](https://file1.kamacoder.com/i/algo/20240613105030.png) ![](https://file1.kamacoder.com/i/algo/20240613105106.png) ![](https://file1.kamacoder.com/i/algo/20240613105143.png) 具体内容,大家可以去代码随想录网站(programmercarl.com)去看看,非常精彩! 期间有很多录友再催:**卡哥怎么不更新图论呢? 卡哥是不是不打算更新图论了**? 等等 每次我都要去解释一波。 如果我想 快速出图论章节,可以很快! **但我不想做 降低 代码随想录整体质量和口碑的事情**。 所以关于现在发布的「代码随想录图论」,我可以很自信的说,**这是市面上大家能看到的,最全、最细致图论算法教程**。 **我在写作的时候没有避开任何雷区,完全遇雷排雷,然后让大家舒舒服服的走过去**。 什么是雷区? 很多知识点 ,大家去看资料的时候会发现是 没有讲解的或者一笔带过, 因为这种雷区知识点 很难讲清楚或者需要花费大量的时间去讲明白。 一些知识点是这样的:**自己一旦懂了就知道是那么回事,但要写出来,要给别人讲清楚,是很难的一件事**。 这些知识点同样是雷区,就是大家在看 教程或者算法讲解的时候,作者避而不谈的部分。 例如: 深搜为什么有两种写法,同样的广搜为什么有一种写法超时了,bellman_ford 为什么 要松弛 n - 1次,负权回路对最短路求解的影响 等等。 这一点大家在阅读代码随想录图论的时候,**可以感受到 我对细节讲解的把控程度**。 ## 为什么要出图论 图论是很重要的章节,也是 大家求职笔试面试,无论是社招还是校招,都会考察的知识内容。 而且图论应用广泛,在大家做项目开发的时候,或多或少都会用到图论相关知识。 例如:通信网络(拓扑排序、最短路算法),社交网络(深搜、广搜),路径优化(最短路算法),任务调度(拓扑排序),生物信息学(基因为节点,基因关系为边),游戏开发(A * 算法等)等等 为了保质保量更新图论,**市面上所有的算法书籍,我都看过**! **反复确认 思路正确性的同时,不仅感叹 市面上的算法书籍 在图论方面的 “缺斤少两**” 。 大名鼎鼎的《算法4》 以图论内容详细且图解多 而被大家好评, 以最短路算法为例,《算法4》,只讲解了 Dijkstra(堆优化)、SPFA (Bellman-Ford算法基于队列) 和 拓扑排序, 而 dijkstra朴素版、Bellman_ford 朴素版、bellman_ford之单源有限最短路、Floyd 、A * 算法 以及各个最短路算法的优劣,并没有讲解。 其他算法书籍 更是对图论的很多知识点一笔带过。 而在 代码随想录图论章节,**仅仅是 最短路算法方面,我就详细讲解了如下内容**: * dijkstra朴素版 * dijkstra堆优化版 * Bellman_ford * Bellman_ford 队列优化算法(又名SPFA) * bellman_ford 算法判断负权回路 * bellman_ford之单源有限最短路 * Floyd 算法精讲 * 启发式搜索:A * 算法 **常见最短路算法,我都没有落下**。 而且大家在看很多算法书籍是没有编程题目配合练习,这样学习效果大打折扣, 一些书籍有编程题目配合练习但知识点严重不全。 ## 出题 我在讲解图论的时候,最头疼的就是找题,在力扣上 找题总是找不到符合思路且来完整表达算法精髓的题目。 特别是最短路算法相关的题目,例如 Bellman_ford系列 ,Floyd ,A * 等等总是找不到符合思路的题目。 所以我索性就自己出题吧,**这也是 卡码网(kamacoder.com)诞生的一个原因之一**。 **为了给大家带来极致的学习体验,我在很多细节上都下了功**夫。 卡码网专门给大家准备的ACM输入输出模式,**图论是在笔试还有面试中,通常都是以ACM模式来考察大家**,而大家习惯在力扣刷题(核心代码模式),核心代码模式对图的存储和输出都隐藏了。 **图论题目的输出输出相对其他章节的题目来说是最难处理的**。 ### 输入的细节 图论的输入难在 图的存储结构,**如果没有练习过 邻接表和邻接矩阵 ,很多录友是写不出来的**。 而力扣上是直接给好现成的 数据结构,可以直接用,所以练习不到图的输入,也练习不到邻接表和邻接矩阵。 ACM输入输出模式是最考察候选人对代码细节把控程度。 如果熟练ACM模式,那么核心代码模式基本没问题,但反过来就不一定了。 ### 输出的细节 同样,图论的输出也有细节,例如 求节点1 到节点5的所有路径, 输出可能是: ``` 1 2 4 5 1 3 5 ``` 表示有两条路可以到节点5, 那储存这个结果需要二维数组,最后在一起输出,力扣是直接return数组就好了,但 ACM模式要求我们自己输出,这里有就细节了。 就拿 只输出一行数据,输出 `1 2 4 5` 来说, 很多录友代码可能直接就这么写了: ```CPP for (int i = 0 ; i < result.size(); i++) { cout << result[i] << " "; } ``` 这么写输出的结果是 `1 2 4 5 `, 发现结果是对的,一提交,发现OJ返回 格式错误 或者 结果错误。 如果没练习过这种输出方式的录友,就开始怀疑了,这结果一样一样的,怎么就不对,我在力扣上提交都是对的! **大家要注意,5 后面要不要有空格**! 上面这段代码输出,5后面是加上了空格了,如果判题机判断 结果的长度,标准答案`1 2 4 5`长度是7,而上面代码输出的长度是 8,很明显就是不对的。 所以正确的写法应该是: ```CPP for (int i = 0 ; i < result.size() - 1; i++) { cout << result[i] << " "; } cout << result[result.size() - 1]; ``` 这么写,最后一个元素后面就没有空格了。 这是很多录友经常疏忽的,也是大家刷习惯了 力扣(核心代码模式)根本不会注意到的细节。 **同样在工程开发中,这些细节都是影响系统稳定运行的因素之一**。 **ACM模式 除了考验算法思路,也考验 大家对 代码的把控力度**, 而 核心代码模式 只注重算法的解题思路,所以输入输出这些就省略掉了。 ## 情怀 大家可以发现,**现在 用心给大家更新硬核且免费资料的博主 已经不多了**。 这一年的空闲时间,如果我用来打磨付费课程或者付费项目,或者干脆把图论做成付费专栏 加上现在的影响力,一定可以 “狠狠赚一笔”。 对我来说,有些钱可以赚,有些钱不赚。 如果持续关注代码随想录的录友可以发现:代码随想录不仅仅优质题解和视频免费,还有 [ACM模版配套25题](https://mp.weixin.qq.com/s/ai_Br_jSayeV2ELIYvnMYQ)、 [设计模式精讲配套23题](https://mp.weixin.qq.com/s/Wmu8jW4ezCi4CQ0uT9v9iA)、[每周举办大厂笔试真题(制作真题是十分费时的)](https://mp.weixin.qq.com/s/ULTehoK4GbdbQIdauKYt1Q), 这些都是免费优质资源。 **在付费与免费之间,我一直都在努力寻找平衡**。 很多录友之所以付费加入 [知识星球](https://mp.weixin.qq.com/s/65Vrq6avJkuTqofnz361Rw) 或者 [算法训练营](https://mp.weixin.qq.com/s/vkbcihvdNvBu1W4-bExoXA) ,也是因为看了这些免费资源想支持我一下。 “不忘初心”,说出来很容易,**但真正能随着岁月的流淌 坚持初心,是非常非常难的事情**。 **诱惑太多!有惰性的诱惑,有利益的诱惑**。 正如我之前说的:“代码随想录” 这五个字,我是会用一生去经营。 **免费硬核的算法内容是 代码随想录的立身之本**,也是 大家为什么学算法学编程首选代码随想录的根本所在。 当大家通过 代码随想录 提升了编程与算法能力,考上研或者找到好工作的时候,于我来说已经是很幸福的事情: ![对笔试帮助大](https://file1.kamacoder.com/i/algo/20230914172536.png) ![华为od将近满分](https://file1.kamacoder.com/i/algo/20230914172607.png) ![研究生复试](https://file1.kamacoder.com/i/algo/20240621103130.png) ![红包感谢代码随想录366](https://file1.kamacoder.com/i/algo/20231123151310.png) ![上岸亚马逊](https://file1.kamacoder.com/i/algo/20240206174151.png) ![](https://file1.kamacoder.com/i/algo/20220718094112.png) ![](https://file1.kamacoder.com/i/algo/20220718094332.png) 至此**图论内容 已完全免费开放在代码随想录网站(programmercarl.com),造福广大学习编程的录友们**! Github 也已经同步 :https://github.com/youngyangyang04/leetcode-master ,关于其他语言版本,欢迎录友们去仓库提交PR ## 后序 关于图论PDF版本,我后面会整理出来,免费发放给大家。 关于图论视频版本,不出意外,应该在年底开始在B站更新,同样免费开放。 总之,代码随想录会持续更新下去,无论是文字版还是视频版。 希望大家 不用 非要到找工作的时候 或者要考研的时候 才想到代码随想录。 **代码是作品,算法更是艺术**,时不时来欣赏一段解决关键问题的优雅代码,也是一种享受。 最后,**愿录友们学有所成,归来仍看代码随想录**!