

# 图论正式发布！

录友们！ 今天和大家正式宣布：大家期盼已久的「代码随想录图论」正式发布了。

**一年多来，日日夜夜，伏案编码、思考、写作，就为了今天给录友们一个交代**！

我知道录友们在等图论等太久了，其实我比大家都着急。

![大家一直都在催](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站更新，同样免费开放。

总之，代码随想录会持续更新下去，无论是文字版还是视频版。

希望大家 不用 非要到找工作的时候 或者要考研的时候 才想到代码随想录。

**代码是作品，算法更是艺术**，时不时来欣赏一段解决关键问题的优雅代码，也是一种享受。

最后，**愿录友们学有所成，归来仍看代码随想录**！



