欧拉路/欧拉回路 学习笔记
判定
有向图
首先这张图将所有的有向边转为无向边之后图连通。
反例:
其次,我们知道当且仅当所有点的入度和出度都相等,才会有欧拉回路。因为一个点进去之后一定会出来,所以入度一定等于出度。
同理,我们也可以知道入度和出度差 \(1\) 时,才会有欧拉路。因为不要从起点走回起点,所以起点不会再进去,终点也不会再出来。
无向图
因为无向图没有入/出度之分,所以只用看是否为奇/偶数即可。
路径
相关题目:洛谷 P7771 【模板】欧拉路径
假设我们到了点 \(u\),继续向后遍历,直到没有边为止。然后就是要记录上一次用到哪里了,不然时间复杂度时 \(O(m^2)\)。
然后我们回溯到点 \(u\) 时,将 \(u\) 入栈。
欧拉路就是栈的倒序输出。
为什么不边跑 dfs 边输出?
这张图如果这么用的话,会先访问终点 \(2\),再访问其他的点。
而最后入栈呢,则是可行的。(解释不清楚啊啊啊啊)
本文来自博客园,作者:coding_goat_qwq,转载请注明原文链接:https://www.cnblogs.com/CodingGoat/p/18584702